一、Dockerfile的编写
编写DockFile实现安装httpd服务
1.导入镜像
[root@server1 ~]# systemctl start docker
[root@server1 ~]# docker load -i rhel7.tar
2.编写Dockerfile
[root@server1 ~]# mkdir /tmp/docker
[root@server1 docker]# vim Dockerfile
FROM rhel7 # 源镜像是rhel7,最好将名为rhel7的镜像放在本地
COPY yum.repo /etc/yum.repos.d
RUN rpmdb --rebuilddb && yum install -y httpd
# 执行命令安装httpd并清除yum缓存
# rpmdb 命令用于初始化和重建rpm数据库
# --rebuilddb:从已安装的包头文件,反向重建RPM数据库
CMD ["/usr/share/httpd","-D","FOREGROUND"]
# 打开apach服务
# -D 是全局文件/etc/sysconfig/httpd中的打开参数
3. 编写yum.repo(当前目录下)
[root@server1 docker]# vim yum.repo
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.26.250/install ##这里是网络yum源
gpgcheck=0
4.封装镜像,并测试能否正常使用
[root@fserver1 docker]# docker build -t rhel7:v1 . (注意后面 有个点表示当前目录)
[root@server1 docker]# docker run -d --name vm1 rhel7:v1
[root@server1 docker]# docker inspect vm1
"IPAddress": "172.17.0.2",
[root@server1 docker]# cat index.html
www.westos.org
[root@server1 docker]# docker container cp index.html vm1:/var/www/html
[root@server1 docker]# curl 172.17.0.2 测试可以正常访问
www.westos.org
添加数据卷挂载位置(VOLUME [“var/www/html”])
1.编写Dockerfile
[root@server1 docker]# cat Dockerfile
FROM rhel7
COPY yum.repo /etc/yum.repos.d/yum.repo
RUN rpmdb --rebuilddb && yum install httpd -y
EXPOSE 80 # 定义端口为80
VOLUME ["var/www/html"]
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
2.封装镜像
[root@server2 docker]# docker build -t rhel7:v2 .
此时可以看到 rhel7:v2比 rhel7:v1多了两层(因为Dockerfile多了两行)
[root@server1 docker]# docker history rhel7:v1
IMAGE CREATED CREATED BY SIZE COMMENT
6aba3292e6f9 6 minutes ago /bin/sh -c #(nop) CMD ["/usr/sbin/httpd" "-… 0B
c9bd44f55472 6 minutes ago /bin/sh -c rpmdb --rebuilddb && yum install … 52.7MB
acc5ebeaf086 7 minutes ago /bin/sh -c #(nop) COPY file:e6936534a8c84008… 72B
0a3eb3fde7fd 4 ye