一、dockerfile使用初体验(构建centos6.9_sshd镜像)
1、创建dockerfile目录
docker镜像可以推到github,然后再推到dockerhub上,两者是有关联的
[root@localhost ~]# mkdir -p /opt/dockerfile
[root@localhost dockerfile]# mkdrir centos6.9_sshd #创建dockerfile存放目录
二、编写dockerfile文件
[root@localhost centos6.9_sshd]# vi dockerfile #编写dockerfile文件,早期版本要求Dockerfile这个名称,首字母大写
一个dockerfile的第一个非注释命令必须是FROM。
(1)FROM指令有两种参数:
syntax:
(1)FROM centos:6 #使用tag
(2)FROM centos:d981cf683978 #使用hash值
(2)RUN构建镜像过程中执行的命令,命令也有两种命令方式
syntax:
(1)直接跟上shell命令,此时的RUN相当于/bin/bash -c bash命令1 && bash命令2 && bash命令3............................
(2)一些程序专用语法的格式如:mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data可以写成:
["mysqld","--initialize-insecure", "--user=mysql", "--basedir=/usr/local/mysql", "--datadir=/data/mysql/data"]
这种命令一般都写到脚本中。
(3)CMD命令是docker启动后执行的命令。
CMD ["/usr/sbin/sshd","-D"]
最后生成的dockerfile文件如下:
#cenos6.9-sshdv1.0
FROM centos:6 #dockerfile第一个非注释指令必须是FROM
RUN mv /etc/yum.repos.d/*.repo && echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/pub/centos6\ngpgcheck=0">/etc/yum.repos.d/ftp.repo && yum makecache fast && yum install -y openssh-server #配置本地yum源
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop && echo "123456" | passwd root --stdin #设置sshd的密码以及初始化
EXPOSE 22 #暴露端口
CMD ["/usr/sbin/sshd","-D"] #docker启动时执行的命令。
注:如果是多服务的,可以把sshd -D放到最后一个执行。其他服务也可以查询各服务官网,看看如何使服务前台运行。
三、使用dockerfile构建镜像
[root@localhost centos6.9_sshd]# docker image build -t “qinglong\cenos6_sshd:v1” ./
注:在dockerfile中每一行都会生成一个容器,dockerfile有多少条就会启动多少临时容器。我们可以登录到这些临时容器中进行调试。