docker镜像的创建(docker commit方式与dockerfile方式(推荐dockerfile方式))

docker commit方式创建镜像
1.导入镜像
在这里插入图片描述
2.镜像创建容器并进入查看信息
[root@server1 ~]# docker run -it --name vm2 ubuntu
查看内核版本
在这里插入图片描述
查看真机内核
在这里插入图片描述
可以看到容器与真机共享内核

3.在容器创建文件后按‘ctrl+d’退出后查看该容器
在这里插入图片描述
4.删除rm2然后再次运行运行查看发现文件丢失
在这里插入图片描述

  • 文件的恢复
    1.创建文件退出并在ubuntu的镜像上建立ubuntu:v2镜像,新建立的镜像是在ubuntu的镜像上进行叠加的,可以查看到。
    在这里插入图片描述
    2.删除vm2后以新建的ubuntu:v2镜像运行vm2容器,查看数据是已经恢复了的
    在这里插入图片描述
    当然,如果以ubuntu的镜像上建立的ubuntu:v2镜像中也没有file文件,那么这些文件是不会恢复的。

这种方式建立的镜像无法显示对其进行的操作,所以往往很不安全,我们一般采用dockerfile的方式创建
dockerfile方式创建apache

  • 构建纯净的环境,去除其余镜像的影响

[root@server1 ~]# docker rmi ubuntu:v1
[root@server1 ~]# docker rmi ubuntu:v2
[root@server1 ~]# docker rm v1
[root@server1 ~]# docker rm v2
[root@server1 ~]# docker rmi game2048:latest

  • 将rhel7镜像导入本地导入

[root@server1 ~]# ls
game2048.tar rhel7.tar ubuntu.tar
[root@server1 ~]# docker load -i rhel7.tar
e1f5733f050b: Loading layer 147.1MB/147.1MB
在这里插入图片描述

  • 以该镜像建立容器(需要指定shell),并进行相关配置
    添加yum源并安装httpd
    在这里插入图片描述
    若无法安装,则执行下列命令后在安装
    bash-4.2# rpmdb --rebuilddb
    在这里插入图片描述
  • 使用docker构建httpd
    -构建docker目录,配置yum源并建立Dockerfile文件
    [root@server1 ~]# mkdir docker
    [root@server1 ~]# cd docker
    [root@server1 docker]# vim Dockerfile

[root@server1 docker]# cat dvd.repo
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.32.250/cn
gpgcheck=0
[root@server1 docker]# cat Dockerfile
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y httpd
CMD ["/usr/sbin/httpd","-D",“FOREGROUND”]
在这里插入图片描述

  • 构建httpd镜像
    [root@server1 docker]# docker build -t rhel7:v2 .
    在这里插入图片描述
  • 以镜像为容器添加映射端口

[root@server1 docker]# docker run -d --name vv -p 80:80 rhel7:v1
c1a4c8e5421d4a20e66be86f674e7ff04d9391992f2bee4ba8b54941db72c76d
在这里插入图片描述

  • 给配置文件中加入发布文件后测试
    [root@server1 docker]# vi Dockerfile
    FROM rhel7
    COPY dvd.repo /etc/yum.repos.d/dvd.repo
    RUN rpmdb --rebuilddb && yum install -y httpd
    COPY index.html /var/www/html/index.html
    CMD ["/usr/sbin/httpd","-D",“FOREGROUND”]
  • 重新构建

[root@server1 docker]# docker build -t rhel7:v3 .
[root@server1 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1a4c8e5421d rhel7:v1 “/usr/sbin/httpd -D …” 24 minutes ago Up 24 minutes 0.0.0.0:80->80/tcp vv
[root@server1 docker]# docker rm -f c1a4c8e5421d
c1a4c8e5421d
杀死连接端口的进程

[root@server1 docker]# docker run -d --name vv1 -p 80:80 rhel7:v1
f981ea76ac05f05ad42a27b6e96f112eca35e9ac6ad15f589fd9cd2d891efd00
[root@server1 docker]# cat index.html
aini1wannian
在网页中查看
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值