侧边栏壁纸
博主头像
gale-blog博主等级

少年一贯快马扬帆,道阻且长不转弯,要盛大,要绚烂,要哗然,要用理想的泰坦尼克号去撞现实冰川,要当烧赤壁的风,而非借箭草船,要为了一片海,就肯翻万山

  • 累计撰写 39 篇文章
  • 累计创建 5 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

DockerFile

二月在这里
2024-01-18 / 0 评论 / 0 点赞 / 70 阅读 / 5431 字

Dockerfile的命令

//拉取镜像

FROM 指定基础镜像

接下来的操作都是基于基础镜像操作

FROM eclipse-temurin:8u345-b01-jdk-centos7

FROM [--platform=<platform>]<image> [AS <name>]
FROM [--platform=<platform>]<image>[:<tag>] [AS <name>]
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
#说明:
--platform 指定镜像的平台,比如:Tinux/amd64,Tinux/arm64, or windows/amd64
tag 和 digest是可选项,如果不指定,默认为latest

RUN :执行shell命令

RUN 指令用来在构建镜像阶段需要执行FROM 指定镜像所支持的shell命令。

#shell 格式:相当于 /bin/sh -c  <命令>  此种形式支持环境变量
RUN <命令>

#exec 格式: 此种形式不支持环境变量,注意:是双引号,不能是单引号
RUN  ["可执行文件","参数1","参数2"]

#exec 格式可以指定其他shell 
RUN ["/bin/bash","-c","echo hello yangchuang"]
#示例
RUN echo '<h1>He1o, Docker!</h1>' > /usr/share/nginx/html/index.html
RUN [" /bin/bash","-c","echo he1lo world"]
RUN yum -y insta71 epe]-release
       && yum -y instal1 nginx 
       && rm -rf /usr/share/nginx/html/*
       && echo "<hl> docker test nginx </h1>" > /usr/share/nginx/html/index.html

ENV :设置环境变量

ENV 可以定义环境变量和值,会被后续指令(如:ENV,ADD,COPY,RUN等)通过$KEY或${KEY}进行引用,并在容器运行时保持

#变量赋值格式1
ENV <key> <value>#此格式只能对一个key赋值,<key>之后的所有内容均会被视作其<value>的组成
部分

#变量赋值格式2
ENV <key1>=<value1> <key2>=<value2> \
    <key3>=<value3> ...
#此格式可以支持多个key赋值,定义多个变量建议使用,减少镜像层
#如果<value>中包含空格,可以以反斜线、进行转义,也可通过对<value>加引号进行标识:另外,反斜线也可用于续行

#只使用一次变量
RUN <key>=<value> <command>

#引用变量
RUN $key .....

#变量支持高级赋值格式
$[key: -word}
$[kye: +word]

示例
ENV VERSION-1.0 DEBUG-on NAME-"Happy Feet
ENV PG_MAJOR 9.3
ENV PG VERSION 9.3.4
RUN cur1 -SL http://example.com/postgres-$PG_VERSION.tar.xz  tar -xJc
/usr/src/postgress && ...
ENV PATH /usr/1ocal/postgres-$PG_MAJOR/bin:$PATH

COPY:复制文本

复制本地宿主机的 到容器中的。一般用于将在宿主机上事先准备的配置文件复制到镜像中

  • 可以是多个。可以使用通配符,通配符规则满足GO的filepath.match规则
    filepath.match 参考链接:
    https://golang.org/pkg/path/filepath/#Match

  • 必须是build上下文的路径(为dockerfile 所在目录的相对路径),不能是其父目录中的文件

  • 如果是目录,则是内部文件或子目录会被递归复制,但目录自身不会被复制

  • 如果指定了多个。或在中使用了通配符,则必须是一个目录,且必须以/结尾

  • 可以是绝对路径或者是WORKDIR 指定的相对路径

  • 使用COPY指令。源文件的各种元数据都会被保留,比如读,写,执行权限,文本变更时间等

  • 如果事先不存在,他将会被自动创建,这包括其父目录路径

copy hom* /mydir/
copy hom? txt /mydir/

ADD :复制和解包文件

该命令可认为是增强版的COPY,不仅支持COPY,还支持解缩,。可以复制指定的到容器中的

ADD target/moose-job.jar /data/java/

构建镜像

docker 19之前

docker build [options] PATH|URL|-

docker build -f /data/DockerFile -t test:v1 .

docker 24.0.2版本

docker buildx build [options] PATH|URL|-

docker buildx -f /data/DockerFile -t test:v1 .

Dokcer连接推送镜像到harbor的私人镜像库

1.登录镜像库

docker login -n **** -p **** url

2.打包镜像

docker tag TAG 远程地址/Path/镜像名

3.推送镜像

docker push 远程地址/Path/镜像名

推送镜像的时候遇到的问题(连接拒绝)

daemon.json中添加insecure-registries 添加harbor的私人地址

 "insecure-registries": [
     "http://harbor.biaoxunkuaiche.com"
   ]

添加完成之后重启docker服务 systemctl restart docker.service

docker info 查看添加信息

还有问题可以去添加hosts文件

ping harbor的地址 添加hosts

最后解决还可以安装 gnupg2 pass centos 安装命令

yum install gnupg2 pass

0

评论区