【微服务实战之Docker容器】第三章-镜像仓库

系列文章目录

【微服务实战之Docker容器】第一章-下载及安装


文章目录

  • 系列文章目录
  • Docker镜像提交
  • 本地镜像发布到阿里云
  • 阿里云镜像下载到本地使用
  • 本地镜像发布到私有库


Docker镜像提交

  • docker commit提交容器副本使之成为一个新的镜像
  • docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
  • 案例演示ubuntu安装vim
    • 从Hub上下载ubuntu镜像到本地并成功运行
    • 原始的默认Ubuntu镜像是不带着vim命令的
    • 外网连通的情况下,安装vim
    • apt-get update
    • apt-get -y install vim
    • 安装完成后,commit我们自己的新镜像
    • docker commit -m=“安装了vim的镜像” -a=“hahaz” 容器ID test333/mytestu:1.0
    • 查看images,发现我们自己提交的unbutu172M,比拉取的多了。
    • 运行起来,自带vim

本地镜像发布到阿里云

  1. 进入阿里云开发者平台。
    https://promotion.aliyun.com/ntms/act/kubernetes.html
  2. 创建仓库镜像
    选择控制台,进入容器镜像服务–>选择个人实例–>命名空间–>创建命名空间(comleadertest)–>镜像仓库–>创建仓库–>输入信息–>代码源选择本地仓库–>点击创建仓库
    我们要推送镜像到阿里中心仓库,使用给出的以下命令即可
    仓库镜像–> 管理即可获取到对应脚本
    【微服务实战之Docker容器】第三章-镜像仓库_第1张图片
    先使用自己的账号登录阿里云,对应的是第一条命令
    【微服务实战之Docker容器】第三章-镜像仓库_第2张图片
    绑定本地镜像标签,对应第二条命令
    【微服务实战之Docker容器】第三章-镜像仓库_第3张图片
    推送

【微服务实战之Docker容器】第三章-镜像仓库_第4张图片

推送成功
【微服务实战之Docker容器】第三章-镜像仓库_第5张图片

阿里云镜像下载到本地使用

先删除本地的镜像
【微服务实战之Docker容器】第三章-镜像仓库_第6张图片

查看镜像ID

docker images

根据ID删除镜像

docker rmi -f e31d10b7fc81

拉取阿里云镜像,和上传一样,提供的也有脚本
【微服务实战之Docker容器】第三章-镜像仓库_第7张图片

拉取
【微服务实战之Docker容器】第三章-镜像仓库_第8张图片

【微服务实战之Docker容器】第三章-镜像仓库_第9张图片

本地镜像发布到私有库

  1. 搭建本地私有的仓库中心
docker pull registry

默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调

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

启动下载过的ubuntu镜像

docker run -it ubuntu /bin/bash

进入到了docker内的ubuntu命令行界面,更新apt-get

apt-get update

下载安装ifconfig(默认的最小镜像是不带的)

apt-get install net-tools

安装完成后,ifconfig,已经能够使用
接下来ctrl+p+q退出容器
执行命令,将容器生成新的镜像,添加导本地镜像中

docker commit -m="ifconfig cmd add" -a="zzyy" a69d7c825c4f zzyyubuntu:1.2  

【微服务实战之Docker容器】第三章-镜像仓库_第10张图片
把刚才的ubuntu关掉,然后启动我们的新的镜像,检查ifconfig命令是否可以正常使用

docker stop 6432d7887553
docker run -it d4338649e7e9 /bin/bash
  1. curl验证私服库上有什么镜像
 curl -XGET http://192.168.248.128:5000/v2/_catalog

可以看到,目前私服库没有任何镜像上传过。。。。。。
在这里插入图片描述
3. 将新镜像zzyyubuntu:1.2修改符合私服规范的Tag
(给镜像打标签可以理解为git中的将本地仓库和远程仓库相关联,后边使用push命令就可以推送了)
按照公式: docker tag 镜像:Tag Host:Port/Repository:Tag

docker tag  zzyyubuntu:1.2  192.168.248.128:5000/zzyyubuntu:1.2 

【微服务实战之Docker容器】第三章-镜像仓库_第11张图片
4. 修改配置文件使私服支持http
私服一般做了安全加固,默认不支持http形式的推送,修改配置取消这个限制

vim /etc/docker/daemon.json

注意:配置是json格式,添加时要有一个逗号

,
  "insecure-registries": ["192.168.248.128:5000"]

【微服务实战之Docker容器】第三章-镜像仓库_第12张图片
修改完配置后,重启docker

systemctl restart docker

重启docker后,需要重启私服镜像

docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
  1. 将镜像推送到远程仓库
docker push 192.168.248.128:5000/zzyyubuntu:1.2

验证是否推送成功

 curl -XGET http://192.168.248.128:5000/v2/_c

【微服务实战之Docker容器】第三章-镜像仓库_第13张图片
6. 从私服拉取到本地执行
先把本地的镜像删除(把两个都删除)

docker rmi -f 192.168.248.128:5000/zzyyubuntu:1.2
docker rmi -f zzyyubuntu:1.2

删完之后检查下
然后从私服仓库重新拉取

docker pull 192.168.248.128:5000/zzyyubuntu:1.2

重新运行拉取的镜像,测试下ifconfig,发现成功啦。
O(∩_∩)O

你可能感兴趣的:(微服务实战之Docker容器,微服务,docker,架构)