在本地的镜像,可以导出成 tar归档文件,可以把该文件分享给他人使用,然后在其他机器上再导入镜像,就可以使用了。
其实,也可以把本地创建好的镜像上传到公共的或者私有的镜像仓库(最常用)。
这里使用阿里云账号。创建公共的镜像仓库
在“容器镜像服务”里面创建,创建好之后,仓库的基本信息,操作指南里面都有说明。
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说明:
[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. 求知若饥,虚心若愚。