dockerfile - yaokun123/php-wiki GitHub Wiki

Dockerfile的使用

Dockerfile的基本使用初体验(centos6.9_sshd)

mkdir -p /opt/dockerfile/centos6.9_sshd

vim Dockerfile

# Centos6.9-sshdv1.0
# 第一个非注释行必须以FROM开头
FROM centos:6.9
RUN yum install -y openssh-server
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop && echo "123456" | passwd root stdin
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

使用:
docker build -t "centos6.9-sshd:v1.0" ./ 

1、FROM:基础镜像,一切从这里开始构建

语法有两种语法

方法一:FROM centos:6.9
方法二(更安全):FROM centos@imageID

2、MAINTAINER,镜像是谁写的,姓名+邮箱

3、RUN:构建镜像过程中运行的命令

dockerfile每执行一条语句就会创建一个临时容器,这些临时容器后期可以用以调试。
这些临时镜像是不能删除的。因为会有依赖问题。
所以能写在一行就尽量写在一行,避免创建过多的临时容器。多个命令之间用&&连接

RUN也有两种语法:
第一种(常用):运行bash命令(yum install -y openssh-server)
第二种:[命令,第一个参数,第二个参数,......]

4、ADD:将宿主机dockerfile目录下的文件拷贝到容器内,如果是压缩文件会自动解压( .tar.gz/.tar.bz2/.tar.xz/.tar ),可以指定源为url

5、WORKDIR:切换镜像工作目录

6、VOLUME:制作容器时候设置好数据卷,启动容器的时候就不需要-v配置数据卷了

7、EXPOSE:向外暴露的端口,启动容器的时候就不需要-p配置端口了

8、CMD(最后出现):使用镜像启动容器时默认运行的命令,只有最后一个会生效,而且会被替代

9、ENTRYPOINT(最后出现):CMD可以被启动容器时指定的命令替换,而ENTRYPOINT不能被替换。可以追加命令

10、ONBUILD:当构建一个被继承Dockerfile这个时候就会运行ONBUILD的指令,触发指令

11、COPY:将宿主机dockerfile所在目录下的文件拷贝到容器的知道目录下(支持通配符)。如果拷贝的是目录,只拷贝目录下的子文件

12、ENV:声明环境变量

13、USER:切换用户