Docker上传镜像到阿里云或私服仓库

 

在本地的镜像,可以导出成 tar归档文件,可以把该文件分享给他人使用,然后在其他机器上再导入镜像,就可以使用了。

其实,也可以把本地创建好的镜像上传到公共的或者私有的镜像仓库(最常用)。

一、上传到公共的镜像仓库

这里使用阿里云账号。创建公共的镜像仓库

在“容器镜像服务”里面创建,创建好之后,仓库的基本信息,操作指南里面都有说明。

Docker上传镜像到阿里云或私服仓库_第1张图片

Docker上传镜像到阿里云或私服仓库_第2张图片

1、登录阿里云Docker Registry

[root@centos7 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jqcontos            v7                  e95e8427c1eb        23 hours ago        203MB
redis               latest              41de2cc0b30e        5 days ago          104MB
centos              7                   7e6257c9f8d8        3 weeks ago         203MB
[root@centos7 ~]# docker login --username=jq_demo registry.cn-hangzhou.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2、使用 docker tag 命令:添加镜像标签

标记本地镜像,将其归入某一仓库。

语法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

给 jqcontos:v7 添加镜像标签,标记到公共仓库

[root@centos7 ~]# docker tag jqcontos:v7 registry.cn-hangzhou.aliyuncs.com/charge/repo_test:jqcentosv7
[root@centos7 ~]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/charge/repo_test   jqcentosv7          e95e8427c1eb        23 hours ago        203MB
jqcontos                                             v7                  e95e8427c1eb        23 hours ago        203MB
redis                                                latest              41de2cc0b30e        5 days ago          104MB
centos                                               7                   7e6257c9f8d8        3 weeks ago         203MB

3、使用 docker push 命令:将本地的镜像上传到镜像仓库

语法:docker push [OPTIONS] NAME[:TAG]

把标记好的jqcontos:v7 上传到公共仓库

[root@centos7 ~]# docker push registry.cn-hangzhou.aliyuncs.com/charge/repo_test
registry.cn-hangzhou.aliyuncs.com/charge/repo_test             registry.cn-hangzhou.aliyuncs.com/charge/repo_test:jqcentosv7
[root@centos7 ~]# docker push registry.cn-hangzhou.aliyuncs.com/charge/repo_test:jqcentosv7 
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/charge/repo_test]
613be09ab3c0: Pushed 
jqcentosv7: digest: sha256:7aa35fe4f930a54ba521489eca0e2e5edef3cb3105a263bbb72c054a3aa82372 size: 529

 

4、从公共仓库拉取镜像 - docker pull命令

语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

[root@centos7 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/charge/repo_test:jqcentosv7   

跟着操作指南来,还是很简单的。

 

二、上传到私有的镜像仓库

1、搭建一个docker私有库服务

使用 docker run 命令:创建一个新的容器并运行一个命令

语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -d: 后台运行容器,并返回容器ID;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • --name="nginx-lb": 为容器指定一个名称;
  • --restart=alwarys 标识当docker daemon启动的时候一起启动。
[root@centos7 ~]# docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
8df654f7a11d7112991c9c04a818b35251f9650eec7f405de799c4a403da8584

docker私服的搭建非常简单,这里在启动镜像的时候会先去下载registry 2.0。

这样一个docker私服就已经创建并启动好了。

2、将镜像上传到docker私服 -- push

      添加镜像标记,然后push。

[root@centos7 ~]# docker tag redis:latest localhost:5000/redis:latest
[root@centos7 ~]# docker push localhost:5000/redis:latest 

3、拉取私有仓库镜像 -- pull

[root@centos7 ~]# docker pull localhost:5000/redis:latest

4、查看私服镜像所有仓库

[root@centos7 ~]# curl http://localhost:5000/v2/_catalog
{"repositories":["redis"]}

5、查看仓库中镜像的所有标签列表

[root@centos7 ~]# curl http://localhost:5000/v2/centos/tags/list
{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"centos"}}]}

 

 6、使用 localhost,127.0.0.1 ,ip 都可以,局域网中一般使用 ip地址。

注意:使用 ip地址,可能会报错,

原因是:docker私有仓库服务器,默认是基于 https传输的,所以我们设置该ip不使用 https传输

出现上面问题,配置Docker引擎的配置文件/etc/docker/daemon.json ,重新加载它,并重启Docker,然后在操作即可。

"insecure-registries": ["ip:port"]

[root@centos7 ~]# vim /etc/docker/daemon.json 
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl restart docker

这样设置该ip不使用https传输的操作不安全。如果配置安全证书,管理访问权限,提高安全性,可自行百度。

 

不管是公共的还是私有的镜像仓库,上传,拉取命令都一样,注意填写好仓库Registry地址就行。

 

参考文章:

Docker私服搭建及上传自己镜像到私服仓库

The push refers to a repository(docker报错解决方案)

 

—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。

你可能感兴趣的:(Docker,上传镜像到阿里云或私服仓库)