Docker容器技术之Dockerfile的编写及镜像的优化

一、Dockerfile的编写

  1. 导入镜像

    docker load -i rhel7.tar 
    
  2. 编写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中的打开参数
    
  3. 编写yum.repo(当前目录下)

    [root@foundation19 docker]# vim yum.repo
    [rhel7.3]
    name=rhel7.3
    baseurl=http://172.25.19.250/rhel7.3       ##这里是网络yum源
    gpgcheck=0
    
  4. 封装镜像,并测试能否正常使用

    [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 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值