docker从安装到简单使用(中级)

本文介绍了Docker镜像的分层概念,如何创建自定义镜像,以及镜像和容器层之间的关联。通过示例展示了在容器中安装vim并创建新镜像的过程,以及如何将镜像发布到阿里云。此外,还讨论了容器数据卷的使用,包括数据卷的持久化、共享和继承机制,以及在实际场景中的应用。
摘要由CSDN通过智能技术生成

目录

镜像分层概念

自定义镜像

分层和自定义镜像之间的关联

发布镜像到阿里云

容器数据卷


镜像分层概念

Docker 支持通过扩展现有镜像,创建新的镜像。

最大的一个好处就是 - 共享资源。

自定义镜像

拉下来的Ubuntu系统是不带vim(一个编辑器)的。

但是我们常用vim,如果每次都要下载会很麻烦的

所以我们就要构建一个新的Ubuntu镜像天生自带vim

  1. 我们先在本容器中更新包管理器apt-get update
  2. 在本容器中下载vim:apt-get -y install vim(可以测试一下是否可用) 
  3. 在容器外部执行命令docker commit -m "add vim" -a "lt" 423233962f3c ubuntu/vim:0.0.1
  4. 查看镜像                                                                                                                            
  5. 停止之前启动的容器并用此镜像运行一个容器,并使用vim,发现可以使用

分层和自定义镜像之间的关联

如果多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

修改会被限制在单个容器内。
这就是的容器 Copy-on-Write 特性。

  • 新数据会直接存放在最上面的容器层。
  • 修改现有数据会先从镜像层将数据复制到容器层,修改后的数据直接保存在容器层中,镜像层保持不变。
  • 如果多个层中有命名相同的文件,用户只能看到最上面那层中的文件。

当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

 容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。

发布镜像到阿里云

首先在容器镜像服务创建一个个人实例

 点击个人实例的镜像仓库

 进入管理页面跟着步骤来

 会显示success

 之后修改tag并且提交到远程

 可以在阿里云看到

 拉取阿里云的镜像

docker pull registry.cn-hangzhou.aliyuncs.com/lt_123/lt:0.0.1
并使用vim发现可以使用成功。

容器数据卷

卷的设计目的就是数据的持久化,完全独立与容器的生命周期,因此Docker不会在容器删除时删除其挂载的数据卷。
特点:
   1. 数据卷可以在容器之间共享和重用数据。
   2. 卷的更改可以直接生效。
   3. 数据卷的更改不会包含在镜像的更新中。
   4. 数据卷的生命周期一直持续到没有容器使用它为止。
容器的持久化
容器间继承+共享数据

很简单一个实例:如果你开启一个mysql容器,别人把容器给你-f强制删除了,你容器里边的数据就全部丢了。为了防止这种情况,我们可以让容器的文件和本地文件共享,即使删除了容器,数据仍然保存。

案例:Ubuntu容器某个/tmp/docker_data和我本地/tmp/host_data互通

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data ba6acccedd29 bash

我们在/tmp/docker_data创建一个a.txt:

root@80e2ec097324:/tmp/docker_data# touch a.txt

就会发现本地/tmp/host_data目录下也会有a.txt

假如容器停了,本地文件写入b.txt,容器开启后会同步吗?

答案是:可以。自己试去吧。

如果要限定容器内只能读不能写:(默认读写是rw)

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data:ro ba6acccedd29 bash

容器卷之间有继承机制:(案例)

docker run -it --privileged=true --valumes-from [name] ubuntu bash

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值