点击关注公众号,k8s优秀车间主任及时送达
Dockerfile详解
Dockerfile是一个配置文件,可以自动执行创建Docker镜像的步骤。它类似于Makefile。Docker从Dockerfile中读取指令,以自动执行原本手动执行的步骤来创建映像。要构建镜像,请创建一个名为Dockerfile的文件。
Dockerfile描述了组装映像所需的步骤。创建Dockerfile后,调用docker build命令,使用包含Dockerfile的目录的路径作为参数。
docker build 详解
docker build 是用来构建镜像文件的主要使用参数如下:
•-t:镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
•-f:--file=PATH/Dockerfile 要使用的Dockerfile的路径。如果该路径是相对路径,并且您是从本地目录构建的,则该路径必须是相对于该目录的。目录,如果要从指向tarball或Git存储库的远程URL进行构建,则路径必须相对于远程上下文的根。在所有情况下,文件都必须在构建上下文中。默认值Dockerfile。
案例:
docker build -t nginx-test .
### 参数介绍
FROM
从 Docker 映像创建一个层。
FROM image
FROM image:tag
FROM image@digest
COPY
复制指令,从 Docker 客户端的当前目录中添加文件。
COPY<源路径1>....<目标路径>
RUN
使用 生成应用程序。
RUN<命令行命令>等同于终端操作shell命令
CMD
指定要在容器中运行的命令。
•CMD 在docker run 时运行。
•RUN 是在 docker build。
CMD命令>
注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
ADD
ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。
ENV
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
ENV
ENV==...
VOLUME
VOLUME指令创建具有指定名称和标记的挂载点,
它作为包含来自本机主机或其他主机的外部装载卷集装箱。
作用:
•避免重要的数据,因容器重启而丢失,这是非常致命的。
•避免容器不断变大。
VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>
EXPOSE
仅仅只是声明端口。
作用:
•帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
•在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
EXPOSE <端口1> [<端口2>...]
LABEL
标签指令将元数据添加到图像。标签是一种。
键-值对。要指定不带值的标签,只需使用空。
字符串。要在标签值中包含空格,请使用引号和。
反斜杠,就像在命令行解析中一样。
LABEL=[=...]
LABEL[]
LABEL[]
WORKDIR
WORKDIR指令为后面的run、cmd、entry point、copy和add Dockerfile命令设置工作目录。在一个Dockerfile中可以多次使用。相对路径是相对于上一条WORKDIR指令的路径定义的。
WORKDIR /a
WORKDIR b
WORKDIR c
WORKDIR <工作目录路径>
实战案例操作
构建简http
FROM centos
RUN echo "Hello World!"
COPY index.html /var/www/html/
EXPOSE 80
docker built -t httpd-test .
运行次容器
docker run -d --name http-1 -p 80:80 httpd-test
构建nginx
FROM nginx
RUN echo "这是一个本地构建的nginx镜像" > /usr/share/nginx/html/index.html
EXPOSE 80
docker build -t nginx-test .
测试:
docker run -d --name nginx-1 -p 80:80 nginx-test
curl http://localhost