某些时候使用 Docker Hub
这样的公共仓库可能不方便,或者在公司内网无法访问公网的时候,我们可以选择创建一个本地仓库供私人使用。
直接安装运行 docker-registry
root@phyger-VirtualBox:/home/phyger# docker run -d -p 5000:5000 --restart=always --name my_registry registry Unable to find image 'registry:latest' locally latest: Pulling from library/registry cbdbe7a5bc2a: Pull complete 47112e65547d: Pull complete 46bcb632e506: Pull complete c1cc712bcecd: Pull complete 3db6272dcbfa: Pull complete Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d Status: Downloaded newer image for registry:latest 22a16661a027fc031ba7cab0d9915fbd0ea0829139263e91934055e2988b205c root@phyger-VirtualBox:/home/phyger# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 22a16661a027 registry "/entrypoint.sh /etc…" 5 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp my_registry root@phyger-VirtualBox:/home/phyger# 复制代码
我们在启动 registry
容器的时候将容器的 5000
端口映射到了 host
的 5000
端口,因为默认的 registry
的服务端口是 5000
,此时我们使用 host
的 5000
端口就可以访问到本地的私有仓库。
访问私有仓库
查询 host
的地址:
网络异常,图片无法展示
|
从本地 windows
电脑访问虚拟机的 IP+5000
端口:
[Administrator.LWAL3QZC7R46JQC] ➤ curl http://192.168.56.102:5000/v2/_catalog {"repositories":[]} 复制代码
到此,说明本地仓库搭建成功。
上传镜像
查看本地镜像:
root@phyger-VirtualBox:/home/phyger# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my_ubuntu v5 038342424332 4 days ago 141MB registry latest 2d4f4b5309b1 4 days ago 26.2MB alpine latest a24bb4013296 3 weeks ago 5.57MB ubuntu latest 1d622ef86b13 2 months ago 73.9MB hello-world latest bf756fb1ae65 5 months ago 13.3kB root@phyger-VirtualBox:/home/phyger# 复制代码
将 my_ubuntu:v5
标记为私有镜像 127.0.0.1:5000/my_ubuntu
:
root@phyger-VirtualBox:/home/phyger# docker tag my_ubuntu:v5 127.0.0.1:5000/my_ubuntu:v5 root@phyger-VirtualBox:/home/phyger# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my_ubuntu v5 038342424332 4 days ago 141MB 127.0.0.1:5000/my_ubuntu v5 038342424332 4 days ago 141MB registry latest 2d4f4b5309b1 4 days ago 26.2MB alpine latest a24bb4013296 3 weeks ago 5.57MB ubuntu latest 1d622ef86b13 2 months ago 73.9MB hello-world latest bf756fb1ae65 5 months ago 13.3kB 复制代码
将 127.0.0.1:5000/my_ubuntu 推送到本地私有仓库:
root@phyger-VirtualBox:/home/phyger# docker push 127.0.0.1:5000/my_ubuntu:v5 The push refers to repository [127.0.0.1:5000/my_ubuntu] e92f897b912b: Pushed v5: digest: sha256:8fa3f9d55d4e5793cf936a2592d2405bdf46796c9d06b54abcc1a8104c9a819f size: 528 root@phyger-VirtualBox:/home/phyger# 复制代码
再次从本地 windows
查询私有仓库中的镜像:
网络异常,图片无法展示
|
可以看到,本地私有仓库已经有了一个名为 my_ubuntu
的镜像,如果想查询 my_ubuntu
的详细信息,则使用如下方法:
网络异常,图片无法展示
|
拉取测试
查看本地镜像列表:
网络异常,图片无法展示
|
删除 127.0.0.1:5000/my_ubuntu
后再次查看本地镜像列表:
网络异常,图片无法展示
|
拉取 127.0.0.1:5000/my_ubuntu
网络异常,图片无法展示
|
补充
默认的私有仓库的镜像存放在容器的/var/lib/registry
路径下,如果想要指定镜像在 host
上的存放路径,则在启动 registry
的时候使用文件映射-v
参数即可。例如:
docker run -d -p 5000:5000 --restart=always -v /opt/data/my_registry /var/lib/registry --name my_registry registry