Docker中的Dockfile
1、关于Dockerfile
Docker可以从一个Dockerfile读取内容,自动生成镜像文件。
Dockerfile是一个文本文件,它包含了用户将要在image中执行的所有命令。
通过docker build命令创建镜像时,Dockerfile中包含的这些命令将被连续地执行。
2、Dockfile中的关键字
FROM
用法:FROM <image> Or FROM <image>:<tag> Or FROM <image>@<digest>
例子:FROM ubuntu
用途:获得基础镜像
MAINTAINER
用法:MAINTAINER <name>
例子:MAINTAINER wang_san_shi "wang_san_shi@163.com"
用途:签名信息
RUN
用法:RUN <command> Or RUN ["executable", "param1", "param2"]
例子:RUN apt-get install -y openssh-server
用途:在当前镜像的顶层执行命令并提交结果
CMD
用法:CMD ["executable","param1","param2"] Or CMD ["param1","param2"] Or CMD command param1 param2
例子:CMD [“/bin/echo”, “Testing CMD in Docker!”]
用途:执行可执行文件或者为ENTRYPOINT指定参数或者以"/bin/sh -c"的方法执行命令。
LABEL
用法:LABEL <key>=<value> <key>=<value> <key>=<value> ...
例子:LABEL "com.example.vendor"="ACME Incorporated"
用途:为image配置metadata
EXPOSE
用法:EXPOSE <port> [<port>...]
例子:EXPOSE 8080
用途:告诉docker容器将在指定的端口监听,docker run命令中的-p参数(如-p 8080:8080)可以定义主机和容器之间的端口映射
ENV
用法:ENV <key> <value> Or ENV <key>=<value> ...
例子:ENV myName="wang_san_shi"
用途:设置环境变量
ADD
用法:ADD <src>... <dest> Or ADD ["<src>",... "<dest>"]
例子:ADD hom?.txt /mydir/(?匹配单个字符)
用途:拷贝文件、目录或者远程URL从<src>(主机文件系统)到<dest>(container文件系统)
COPY
用法:同ADD
例子:同ADD
用途:同ADD,区别是ADD可以实现下载URL和解压,而COPY不行
ENTRYPOINT
用法:ENTRYPOINT ["executable", "param1", "param2"] Or ENTRYPOINT command param1 param2
例子:ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D
用途:让容器的功能表现得像一个可执行程序一样
VOLUME
用法:VOLUME <dir>
例子:VOLUME /data
用途:为容器挂在/data目录(对应的主机上层目录为/var/lib/docker/vfs/dir)
3、使用Dockerfile创建image
通常使用docker build命令创建iamge:
docker build -f dockerfile_name -t image_tag .
-f指定Dockrfile的名称;
-t指定image的tag;
.表示dockerfile在当前路径下。
1、关于Dockerfile
Docker可以从一个Dockerfile读取内容,自动生成镜像文件。
Dockerfile是一个文本文件,它包含了用户将要在image中执行的所有命令。
通过docker build命令创建镜像时,Dockerfile中包含的这些命令将被连续地执行。
2、Dockfile中的关键字
FROM
用法:FROM <image> Or FROM <image>:<tag> Or FROM <image>@<digest>
例子:FROM ubuntu
用途:获得基础镜像
MAINTAINER
用法:MAINTAINER <name>
例子:MAINTAINER wang_san_shi "wang_san_shi@163.com"
用途:签名信息
RUN
用法:RUN <command> Or RUN ["executable", "param1", "param2"]
例子:RUN apt-get install -y openssh-server
用途:在当前镜像的顶层执行命令并提交结果
CMD
用法:CMD ["executable","param1","param2"] Or CMD ["param1","param2"] Or CMD command param1 param2
例子:CMD [“/bin/echo”, “Testing CMD in Docker!”]
用途:执行可执行文件或者为ENTRYPOINT指定参数或者以"/bin/sh -c"的方法执行命令。
LABEL
用法:LABEL <key>=<value> <key>=<value> <key>=<value> ...
例子:LABEL "com.example.vendor"="ACME Incorporated"
用途:为image配置metadata
EXPOSE
用法:EXPOSE <port> [<port>...]
例子:EXPOSE 8080
用途:告诉docker容器将在指定的端口监听,docker run命令中的-p参数(如-p 8080:8080)可以定义主机和容器之间的端口映射
ENV
用法:ENV <key> <value> Or ENV <key>=<value> ...
例子:ENV myName="wang_san_shi"
用途:设置环境变量
ADD
用法:ADD <src>... <dest> Or ADD ["<src>",... "<dest>"]
例子:ADD hom?.txt /mydir/(?匹配单个字符)
用途:拷贝文件、目录或者远程URL从<src>(主机文件系统)到<dest>(container文件系统)
COPY
用法:同ADD
例子:同ADD
用途:同ADD,区别是ADD可以实现下载URL和解压,而COPY不行
ENTRYPOINT
用法:ENTRYPOINT ["executable", "param1", "param2"] Or ENTRYPOINT command param1 param2
例子:ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D
用途:让容器的功能表现得像一个可执行程序一样
VOLUME
用法:VOLUME <dir>
例子:VOLUME /data
用途:为容器挂在/data目录(对应的主机上层目录为/var/lib/docker/vfs/dir)
3、使用Dockerfile创建image
通常使用docker build命令创建iamge:
docker build -f dockerfile_name -t image_tag .
-f指定Dockrfile的名称;
-t指定image的tag;
.表示dockerfile在当前路径下。