一、Dockerfile的编写
-
导入镜像
docker load -i rhel7.tar
-
编写Dockerfile
[root@foundation19 docker]# pwd /tmp/docker [root@foundation19 docker]# vim Dockerfile FROM rhel7 # 源镜像是rhel7,最好将名为rhel7的镜像放在本地 COPY yum.repo /etc/yum.repo.d RUN rpmdb --rebuilddb && yum install -y httpd # 执行命令安装httpd并清除yum缓存 # rpmdb 命令用于初始化和重建rpm数据库 # --rebuilddb:从已安装的包头文件,反向重建RPM数据库 EXPOSE 80 # 定义端口为80 CMD ["/usr/share/httpd","-D","FOREGROUND"] # 打开apach服务 # -D 是全局文件/etc/sysconfig/httpd中的打开参数
-
编写yum.repo(当前目录下)
[root@foundation19 docker]# vim yum.repo [rhel7.3] name=rhel7.3 baseurl=http://172.25.19.250/rhel7.3 ##这里是网络yum源 gpgcheck=0
-
封装镜像,并测试能否正常使用
[root@foundation19 docker]# docker load -i rhel7:v1 . (注意后面 有个点表示当前目录) [root@foundation19 ~]# docker run -d --name vm1 rhel7:v1 [root@foundation19 ~]# docker inspect vm1 ##找到IP(172.17.0.2) [root@foundation19 ~]# cd /tmp/docker/ [root@foundation19 docker]# ls Dockerfile yum.repo [root@foundation19 docker]# cat index.html www.westos.org [root@foundation19 docker]# docker container cp index.html vm1:/var/www/html [root@foundation19 docker]# curl 172.17.0.2 ##可以正常访问使用 www.westos.org
添加数据卷挂载位置(VOLUME [“var/www/html”])
[root@foundation19 docker]# cat Dockerfile FROM rhel7 COPY yum.repo /etc/yum.repos.d/yum.repo RUN rpmdb --rebuilddb RUN yum install -y httpd EXPOSE 80 VOLUME ["var/www/html"] CMD ["/usr/sbin/httpd","-D","FOREGROUND"] #封装镜像 [root@foundation19 docker]# docker load -i rhel7:v2 .
此时可以看到 rhel7:v2比 rhel7:v1多了一层
[root@foundation19 docker]# docker history rhel7:v1
IMAGE CREATED CREATED BY SIZE COMMENT
a7655594dff3 About an hour ago /bin/sh -c #(nop) CMD ["/usr/sbin/httpd" "-… 0B
2fb76a304e03 About an hour ago /bin/sh -c #(nop) EXPOSE 80 0B
ec1a73b2e7d6 About an hour ago /bin/sh -c yum install -y httpd 52.8MB
031f7a8b74a0 About an hour ago /bin/sh -c rpmdb --rebuilddb 6.64MB
c32fc667b5f3 About an hour ago /bin/sh -c #(nop) COPY file:254d80ba480dfa06… 71B
0a3eb3fde7fd 4 years ago 140MB Imported from -
[root@foundation19 docker]# docker history rhel7:v2
IMAGE CREATED CREATED BY