公共仓库

在Docker Hub官网注册账号
通过docker login 命令在终端输入用户名及密码来完成 Docker Hub 的登录
可以通过 docker logout 退出登录

推送镜像

给 nginx 添加标签 docker tag nginx feiben/nginx:1.17.5
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
feiben/nginx 1.17.5 f949e7d76d63 2 weeks ago 126MB
nginx latest f949e7d76d63 2 weeks ago 126MB
将自己的镜像推送到 Docker Hub
docker push feiben/nginx:1.17.5

登录Docker Hub可以看到,也可以进行搜索
[root@localhost admin]# docker search chaiqin
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
chaiqin/redis 0

私有仓库

搭建一个私有仓库存放镜像
通过获取官方的 registry 镜像来运行
这将使用官方提供的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。我们可以通过 -v 参数将镜像文件存放在本地的指定路径。
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry —restart=always —name registry registry

这时我们可以通过浏览器访问 http://domain:5000/v2/_catalog 查看仓库是否启动成功。
其中 domain 是你的域名或 ip 地址,下文中的 domain 同理。
通过浏览器访问 http://domain:5000/v2/_catalog 查看仓库是否启动成功

可能遇到问题:
WARNING: IPv4 forwarding is disabled. Networking will not work
解决:

  1. vim /etc/sysctl.conf
  2. 添加如下代码:net.ipv4.ip_forward=1
  3. systemctl restart network

Error response from daemon: driver failed programming external connectivity on endpoint registry (6b
解决:
docker服务启动时定义的自定义链DOCKER被清除
重启即可systemctl restart docker

推送镜像

推送到本地私有镜像仓库的镜像名必须符合“仓库IP:端口 号/repository”的形式,所以可以使用下面命令命名:docker tag redis localhost:5000/redis:6.0.10
通过push命令推送镜像到仓库:
docker push localhost:5000/redis:6.0.10

搜索镜像

搜索私有仓库的镜像并不能用 docker search 命令, 只能通过 http://domain:5000/v2/image_name/tags/list 查看指定镜像存在的 tag 列表
[root@localhost admin]# curl localhost:5000/v2/redis/tags/list
{“name”:”redis”,”tags”:[“6.0.10”]}

下载镜像

docker pull localhost:5000/redis:6.0.10