- 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" ./
-
FROM:基础镜像
语法有两种语法
- 方法一:FROM centos:6.9
- 方法二(更安全):FROM centos@imageID
-
RUN:构建镜像过程中运行的命令
- dockerfile每执行一条语句就会创建一个临时容器,这些临时容器后期可以用以调试。
- 这些临时镜像是不能删除的。因为会有依赖问题。
- 所以能写在一行就尽量写在一行,避免创建过多的临时容器。多个命令之间用&&连接
-
- RUN也有两种语法:
- 第一种(常用):运行bash命令(yum install -y openssh-server)
- 第二种:[命令,第一个参数,第二个参数,......]
-
EXPOSE:向外暴露的端口
CMD(最后出现):使用镜像启动容器时默认运行的命令
COPY:将宿主机dockerfile所在目录下的文件拷贝到容器的知道目录下(支持通配符)。如果拷贝的是目录,只拷贝目录下的子文件
ADD:将宿主机dockerfile目录下的文件拷贝到容器内,如果是压缩文件会自动解压( .tar.gz/.tar.bz2/.tar.xz/.tar ),可以指定源为url
VOLUME:制作容器时候设置好数据卷,启动容器的时候就不需要-v配置数据卷了
WORKDIR:切换目录
ENV:声明环境变量
USER:切换用户
ENTRYPOINT(最后出现):CMD可以被启动容器时指定的命令替换,而ENTRYPOINT不能被替换