Docker镜像commit操作案例

● docker commit提交容器副本使之成为一个新的镜像

   比如 在我们从官网下载的Ubuntu镜像是没有vim命令的:

格式:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

操作实例:(commit一个带有vim命令的新镜像)

① 在终端输入 apt-get update

② 在终端输入 apt-get -y install vim

完成。现在我们自己的这个镜像文件,已经含有了vim编辑功能(兄弟变强了)

    然后,把这个镜像以提交副本的形式生成一个新的镜像:参照上面的格式

     可以看到: 自制的镜像已经出现在了列表里面。

实例:将容器镜像发布到阿里云

        打开阿里云,登录之后进入控制台

 进入个人实例:

①创建命名空间

构建新的命名空间:

在当前命名空间下,创建镜像仓库:

点击下一步,选择本地仓库→创建镜像仓库(需要现有命名空间,再有镜像名称)

创建镜像仓库;

        根据阿里云的页面提示,现在我们要做的是将本地的镜像推送到阿里云的镜像仓库,但是这里需要注意的是,在我首次连接的过程中,一直在报错这个是需要配置访问凭证,具体解决方案:解决方法

 解决之后,使用密码登录:

$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/hud9866/myubuntu:[镜像版本号]

$ docker push registry.cn-hangzhou.aliyuncs.com/hud9866/myubuntu:[镜像版本号]

 可以看到,在阿里云的镜像仓库中已经有了我们刚才上传的镜像文件:

现在 我们进行验证:将阿里云上的镜像下载到本地,现在我已经将本地刚才制作好的添加了vim编辑命令的镜像删除。

 拉取镜像,输入镜像版本号,成功!

docker registry:官方提供的工具,用于构建私有镜像仓库

● 拉取镜像:用于搭建私有镜像仓库

 运行私有库registry,也就相当于本地有一个私有的docker hub ,命令有点复杂:

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

-d: 后台守护式进程,-p:端口映射

这次我们再新建一个镜像(Ubuntu带ifconfig命令),新建容器并安装ifconfig

apt-get update
apt-get install net-tools

commit我们新的一个镜像,因为commit命令需要在容器外执行,现在我们退出容器 然后以副本的形式生成一个新的镜像

docker commit -m="Ubuntu with ifconfig" -a="Hud" 容器ID 要创建的目标镜像名:[标签名]

   接下来需要将这个新的Ubuntu镜像推送到registry本地私服库

①先验证本地私服库有什么镜像      

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

这里有一个问题,因为我的Linux学的不是很好。。。我在复制周阳老师的源指令的时候出现了一点小小的问题,显示访问被拒绝,这是肯定的,因为我用的curl命令后面的ip地址不是自己本机的ip地址。。。

首先 ip addr查看ens33条目中的inet值,即为本机的ip地址

然后再查看私有仓库中,现在有什么:  curl -XGET http://192.168.111.162:5000/v2/_catalog

②将新镜像修改符合私服规范的tag

按照公式: docker   tag   镜像:Tag   Host:Port/Repository:Tag进行修改

 由于docker的私服库做了安全加固,所以一般不支持进行http形式的推送。所以进行第三步:

③修改配置文件使之支持http

  修改配置:告诉端口我们本机的这个IP:192.168.66.11:5000这个端口是安全的(由于是json格式,不要忘记两个配置之前有一个“,”)

vim命令新增如下红色内容:vim /etc/docker/daemon.json然后编辑新增一行:

   "insecure-registries": ["192.168.66.11:5000"]

 :wq!(保存退出)

重启docker,重启registry服务:

 ④push推送到私服库:

docker push 标准名称:[版本号]

 现在再看,发现里面已经有了我刚才上传的那个镜像文件了

为了验证,现在我准备删除本地的镜像,然后从私服库中下载这个镜像到本地验证它的可行性:

 现在,拉取私服库中的镜像到本地:

现在看到:本地已经有了这个镜像,然后呢我们再来运行这个镜像看看有没有ifconfig命令 

运行成功了。 

           

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值