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
评论区