镜像发布到docker私有库

1.Docker Registry

  1. 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢,并且具有被阿里云取代的趋势,不太主流
  2. Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像
  3. Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

2.将本地镜像推送到私有库

2.1下载镜像Docker Registry

命令: docker pull registry

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_docker


docker私有仓库 nexus 上传镜像 docker推送到私有仓库_Docker_02

2.2运行私有库Registry,相当于本地有个私有Docker Hub

命令: docker run -d -p 5000:5000 -v /asule/myregistry/:/tmp/registry --privileged=true registry 默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
-d:后台守护进程
-p:指定端口映射(注意大写的P是随机端口映射)

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_Docker_03

2.3.案例演示创建一个新镜像,ubuntu安装ifconfig命令

  1. 从Hub上下载ubuntu镜像到本地并成功运行
  2. 原始的ubuntu镜像是不带ifconfig命令的
  3. docker私有仓库 nexus 上传镜像 docker推送到私有仓库_Docker_04

  4. 外网连通的情况下,安装ifconfig命令并测试通过

首先在容器中安装ifconfig
命令1: apt-get update命令2: apt-get install net-tools

2.4安装完成后,commit我们自己的镜像

  1. 容器外执行(注意:不要关闭容器)

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

2.5curl验证私服库上有什么镜像

命令: curl -XGET http://192.168.207.163:5000/v2/_catalog

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_Docker_05

2.6将新镜像asuleubuntu:1.2修改成符合私服规范的tag

命令: docker tag 镜像:TAG Host:Post/Repository:Tag自己host主机的IP地址

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_linux_06

2.7修改配置文件使docker私服库支持http

由于docker的私服库做了安全加固,一般默认使不支持http形式的推送的,需要做一些配置取消这个限制

进入配置文件命令: vim /etc/docker/daemon.json添加语句: "insecure-registries":["192.168.207.163:5000"] 不要忘记逗号

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_docker_07

建议重新启动docker

2.8push推送到私服库

命令: docker push 192.168.207.163:5000/asuleubuntu:1.2

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_docker_08

2.9curl验证私服上有什么镜像2

命令: curl -XGET http://192.168.207.163:5000/v2/_catalog

docker私有仓库 nexus 上传镜像 docker推送到私有仓库_linux_09


从第一次验证到现在已经有了asuleubuntu

2.10pull到本地并运行

  1. 先将本地的192.168.207.163:5000/asuleubuntu:1.2删除,以免影响pull测试
  2. docker私有仓库 nexus 上传镜像 docker推送到私有仓库_linux_10

  3. 从私服库获取

命令: docker pull 192.168.207.163:5000/asuleubuntu:1.2

  1. run启动容器,并测试ifconfig成功