Dockerfile是一个文本格式的配置文件,用于快速创建自定义的镜像。
一、基础结构
Dockerfile有一行行命令语句组成,并支持以# 开头的注释行
Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行的指令
例:
#第一行必须制定基于的基础镜像
FROM ubuntu
#维护者信息
MAINTAINER docker_user [email protected]
#镜像操作
RUN apt-get update && apt-get install -y nginx
#容器启动时执行
CMD /usr/sbin/nginx
二、Dockerfile中的指令
1.FROM
格式:
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
作用:制定基础镜像
格式:
MAINTAINER <name>
3.RUN
格式:
RUN <command> (由shell启动,Linux默认为`/bin/sh -c`,Windows默认为`cmd /S /C`)
RUN ["executable", "param1", "param2"] (运行可执行文件)
4.CMD
格式:
CMD ["executable","param1","param2"] (执行可执行文件,优先)
CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)
CMD command param1 param2 (执行shell内部命令)
作用:
指定启动容器时执行的命令,每个Dockerfile只能有一个CMD命令。如果有多个CMD命令,则只执行最后一条
5.EXPOSE
格式:
EXPOSE <port> [<port>…]
作用:
告诉Docker容器需要暴露的端口号,供互联系统使用
6.ENV
格式:
ENV <key> <value>
ENV <key>=<value> ...
作用:
设置环境变量,在容器运行时保持
例:
RUN set -ex && apt-get update && apt-get install -y iputils-ping
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
ENV TERM xterm
ENV PYTHON_VERSION 3.5.3
ENV name1=ping name2=on_ip
CMD $name1 $name2
格式:
ADD <src> <dest>
作用:
该命令将复制指定的<src>到容器的<dest>,其中<src>可以是Dockerfile所在目录的一个相对路径(文件或目录)
8.COPY
格式:
COPY <src> <dest>
作用:
复制本地主机的<src>(Dockerfile所在目录的相对路径的文件或目录)到容器的<dest>。目标目录不存在时,会自动创建,与ADD不同的是不会解压压缩文件
9.VOLUMN
格式:
VOLUME ["/data"]
作用:
用于指定持久化目录,在容器启动时用-v传递参数,例如-v ~/opt/data/mysql:/var/lib/mysql将本机的~/opt/data/mysql和容器内的/var/lib/mysql做持久化关联
容器启动时会加载,容器关闭后会回写。
10.ENTRYPOINT
格式:
ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)
作用:
配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
例:
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
当启动容器后,你将直接看到相当于运行了top -b -c
要进一步查看,你可以直接使用命令docker exec -it test ps aux
相当于使用了docker exec top -b -it test ps aux
11. USER
格式:
USER daemon
作用:
指定运行容器时的用户名或uid,后续的RUN、CMD和ENTRYPOINT也会使用指定用户
12. WORKDIR
格式:
WORKDIR /path/to/workdir
作用:
配置工作目录
13.ONBUILD
格式:
ONBUILD [INSTRUCTION]
作用:
配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令。
14. ARG
格式:
ARG parameter_name
作用:
--build-arg
传递参数
例:
容器启动时传参: --build-arg CONT_IMG_VER=v2.0.1
FROM ubuntu
ARG CONT_IMG_VER
另:docker入门,进阶和源码学习数据pdf(有需要的可留下邮箱)
https://download.csdn.net/download/skh2015java/10246320