天天看点

docker实战学习2022版本(二)之战至终章

docker镜像是分层的,一层一层组成的镜像结构

docker镜像层都是只读的,只有容器是可写的,当容器启动时,一个新的可写层被加载到镜像的顶部。

docker实战学习2022版本(二)之战至终章

为什么docker镜像要采用分层结构呢?

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

我docker服务器启动一个ubuntu的容器,使用vim 命令的时候会发现并没有这个命令,这是由于ubuntu镜像精简了很多命令,只保留linux内核必须的功能与命令,这也是docker中容器非常快的原因。

docker实战学习2022版本(二)之战至终章

下面我们就自己使ubuntu具备vim命令

apt-get update

apt-get -y install vim      

执行完命令之后可以发现vim命令就可以使用了

docker实战学习2022版本(二)之战至终章

提交容器副本使其成为一个新的镜像(容器外执行)

docker commit -m "add vim" -a "hanansheng" cff1debb8875 has-ubuntu:1.1

docker实战学习2022版本(二)之战至终章

 提交之后通过 docker images就可以看到我们刚才提交的镜像

docker实战学习2022版本(二)之战至终章

 这个时候我们运行刚刚生成的镜像,就会发现新的容器是具备vim命令的

总结:docker中的镜像分层,支持通过扩展现有镜像,创建新镜像。类似于java继承于一个base基础类,自己再按需扩展。

我们可以把这个has-ubuntu本地镜像发布到阿里云上面供其他人使用:

docker实战学习2022版本(二)之战至终章

 进入阿里云,进入实例列表:

docker实战学习2022版本(二)之战至终章

 创建命名空间:

docker实战学习2022版本(二)之战至终章

 创建镜像仓库:

docker实战学习2022版本(二)之战至终章

 点击下一步:

docker实战学习2022版本(二)之战至终章

 然后直接执行第三条命令即可:

docker实战学习2022版本(二)之战至终章

 如果执行第一条命令就报了这个错,那就是登录凭证未设置:

docker实战学习2022版本(二)之战至终章

 设置访问凭证密码:

docker实战学习2022版本(二)之战至终章

 设置完登陆凭证就成功连接到阿里云了:

docker实战学习2022版本(二)之战至终章

 然后执行其他命令:

docker实战学习2022版本(二)之战至终章
docker实战学习2022版本(二)之战至终章

 那上传到了阿里云之后怎么验证下是否上传成功呢?可以拉取一下试试:

docker实战学习2022版本(二)之战至终章

 可以看到拉取成功:

docker实战学习2022版本(二)之战至终章

这个例子就证明了docker的分层概念!!

docker私有库学习:

本地搭建docker私有仓库:

步骤一:下载镜像docker registry

docker pull registry

步骤二:运行私有库registry,相当于本地有个私有docker hub

docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

步骤三:创建一个新镜像,ubuntu安装ifconfig命令

docker run -it ubuntu /bin/bash

apt-get update

apt-get  install  net-tools

docker实战学习2022版本(二)之战至终章

commit 新的镜像:

docker commit -m "add config"  -a "hanansheng" cff1debb8875 has-ubuntu:1.6

docker实战学习2022版本(二)之战至终章
docker实战学习2022版本(二)之战至终章

步骤四:curl验证私服库上有什么镜像,目前是空的

curl -XGET http://127.0.0.1:5000/v2/_catalog

docker实战学习2022版本(二)之战至终章

步骤五:将新镜像has-ubuntu:1.x修改符合私服规范的TAG

docker tag has-ubuntu:1.6 127.0.0.1:5000/has-ubuntu:1.6      
docker实战学习2022版本(二)之战至终章

步骤六:修改配置文件使其支持http

vim /etc/docker/daemon.json

docker实战学习2022版本(二)之战至终章

步骤七:push推送到私服库

docker实战学习2022版本(二)之战至终章

 然后再通过crul在验证下私服库中有什么镜像:

curl -XGET http://127.0.0.1:5000/v2/_catalog