一、本地镜像发布到阿里云

1.制作本地镜像

首先我们需要先将已经运行的容器,我们运行一个Ubuntu的镜像,并安装ifconfig工具,再commit

# docker run -it --name="u1" ubuntu bash
    # apt-get update
    # apt-get install net-tools

docker设置阿里源 docker部署到阿里云_推送

docker设置阿里源 docker部署到阿里云_docker_02

docker设置阿里源 docker部署到阿里云_推送_03

 再进行commit

docker设置阿里源 docker部署到阿里云_推送_04

 2.创建阿里云公有库

登录阿里云,进入容器镜像服务>实例列表,选择命名空间,点击创建命名空间 

docker设置阿里源 docker部署到阿里云_linux_05

docker设置阿里源 docker部署到阿里云_私有库_06

 创建命名空间完成

docker设置阿里源 docker部署到阿里云_私有库_07

 再点到镜像仓库

docker设置阿里源 docker部署到阿里云_linux_08

 选择我们刚才创建的命名空间,点击创建镜像仓库

docker设置阿里源 docker部署到阿里云_docker设置阿里源_09

 输入仓库名称和描述,选择公开,点击下一步

docker设置阿里源 docker部署到阿里云_推送_10

 选择本地仓库,点击创建镜像仓库

docker设置阿里源 docker部署到阿里云_私有库_11

 创建完毕后,这里有非常详细的步骤教程,非常人性化!

docker设置阿里源 docker部署到阿里云_linux_12

3.将镜像推送到阿里云公有库

接下来我们根据提示将镜像推送到阿里云仓库

在登录时,他会要求你输入密码,所以要记好你的密码

docker设置阿里源 docker部署到阿里云_推送_13

 我们将whr/ubuntu推送到阿里云上

docker设置阿里源 docker部署到阿里云_docker_14

 我们将原来的镜像删除,删除后重新在阿里云上拉取测试

docker设置阿里源 docker部署到阿里云_docker设置阿里源_15

 在阿里云上拉取我们的镜像

docker设置阿里源 docker部署到阿里云_docker_16

 跑一下这个镜像可以进行ifconfig命令

二、本地镜像发布到私有库

1.docker registry

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

2.本地镜像推送私有仓库

①下载镜像Docker Registry

#docker pull registry

docker设置阿里源 docker部署到阿里云_私有库_17

 ②运行私有库

docker run -d -p 5000:5000  -v /whr/myregistry/:/tmp/registry --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调

docker设置阿里源 docker部署到阿里云_linux_18

 ③commit一个镜像

docker设置阿里源 docker部署到阿里云_私有库_19

 ④查看私库里的镜像

curl -XGET http://本机IP:5000/v2/_catalog

显示为空,因为我们还没有推送镜像

docker设置阿里源 docker部署到阿里云_推送_20

 ⑤将镜像打包

将镜像打包成符合私有库规范的tag   # docker   tag   镜像:Tag   Host:Port/Repository:Tag

docker设置阿里源 docker部署到阿里云_linux_21

 ⑥修改配置文件

修改docker的配置文件,使其支持http

# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://xb2s49ki.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.43.184:5000"]
}

docker设置阿里源 docker部署到阿里云_linux_22

 docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。修改完配置文件后,重启docker,重启docker后容器就关了,重新启动即可

⑦推送到私有库

 # docker push 192.168.43.184:5000/whr/ubuntu:1.0

docker设置阿里源 docker部署到阿里云_linux_23

 ⑧验证私有库

查看私有库上是否有镜像

# curl -XGET http://192.168.43.184:5000/v2/_catalog
可以看到,私有库上已经有了我们创建的镜像

docker设置阿里源 docker部署到阿里云_私有库_24

 ⑨验证

将原有的镜像删除后再从私有库上下载

docker设置阿里源 docker部署到阿里云_私有库_25

 已经将镜像删除,我们再进行拉取

docker设置阿里源 docker部署到阿里云_docker_26

 完成拉取,跑一下镜像,可以正常运行。