dockerfile
构建dockerfile三步:
- 1.编写Dockerfile文件
- 2.docker biuld
- 3.docker run
自动制作镜像
dockerfile主要组成部分:
FROM 基础镜像信息 centos:6.9
RUN 制作镜像操作指令 yum install openssh-server -y
CMD 容器启动时执行指令 ["/bin/bash"]
dockerfile常用指令:
FROM 这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
LABLE 描述,标签
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(会自动解压tar) 制作docker基础的系统镜像
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)
dockerfile其他指令:
COPY 复制文件(不会解压)
ENV 环境变量
ENTRYPOINT 容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)
制作一个dockerfile
- 1.创建dockerfile目录并写入dockerfile
dockerfile 此文件只能以dockerfile命名,写成其他名字不能执行
mkdir /opt/dockerfile/centos:6.9_ssh -p
cd /opt/dockerfile/centos:6.9_ssh
vim dockerfile
[root@docker centos:6.9_ssh]# cat dockerfile
FROM centos:6.9
RUN yum install openssh-server -y
RUN service sshd start
RUN echo '123456'|passwd --stdin root
CMD ["/usr/sbin/sshd","-D"]
- 2.执行docker image build
docker image build -t centos6.9_ssh /opt/dockerfile/centos6.9_ssh
#此时启动容器不用在后面加执行命令,因为dockerfile里已写入CMD,dockerfile代执行启动命令
[root@docker centos6.9_ssh]# docker run -d -p 1022:22 centos6.9_ssh:latest
91ef283d1add01a5996bb876741ce6ed42abb9bfb4976970a70f2c9987498355
[root@docker centos6.9_ssh]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91ef283d1add centos6.9_ssh:latest "/usr/sbin/sshd -D" 26 seconds ago Up 24 seconds 0.0.0.0:1022->22/tcp gallant_gates
此时在本地测试下ssh容器服务是否可以使用,发现可正常使用








网友评论