一、私有仓库的搭建与配置
所谓的 Docker 私有仓库,就是指企业内部所使用的仓库。仓库用于存放各种镜像,区别在于公有仓库所存储的都是一些通用型的镜像比如 Tomcat 镜像、Nginx 镜像等。私有仓库则用于存放自身开发的企业级应用。如果想要在一个 局域网
来共享一些镜像,那么就需要用到私有仓库。
- 下载镜像Docker Registry,专门用来搭建私有库的镜像
[root@192 ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete
0d96da54f60b: Pull complete
5b27040df4a2: Pull complete
e2ead8259a04: Pull complete
3790aef225b9: Pull complete
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@192 ~]#
- 创建私有仓库,占用 5000 端口;运行私有库Registry,相当于本地有个私有Docker hub
docker run -d -p 5000:5000 --name=registry -v /dhx/myregistry/:/tmp/registry --privileged=true registry
此时已经算是完成了私有仓库的构建,如下;
- 测试连接,在本地浏览器中输入
192.168.200.129:5000/v2/_catalog
进行访问,可以成功访问则说明私有仓库搭建完成。成功效果如下:
192.168.200.129 是我的 Docker 宿主机(虚拟机)IP 地址,大家操作时注意查看自己的的宿主机 IP。
- 修改
/etc/docker/daemon.json
文件,此步骤的目的是让 Docker 能够信任该私有仓库的地址,只有这样之后才能将本地镜像上传至私有仓库;
[root@192 ~]# vi /etc/docker/daemon.json
在该文件中加入以下代码:
"insecure-registries":["192.168.200.129:5000"]
修改配置文件之后,重启 Docker 使其生效;
2个配置中间有个逗号 ','别漏了,这个配置是json格式的。
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.200.129:5000"] #增加这个
}
[root@192 ~]# systemctl restart docker
二、镜像上传至私有仓库
此处我以 jdk1.8 镜像为例进行操作演示。
- 标记要上传的镜像为私有仓库镜像;
按照公式:
docker tag 镜像:Tag Host:Port/Repository:Tag
自己host主机IP地址,填写同学你们自己的,不要粘贴错误
使用命令 docker tag 将jdk1.8 这个镜像修改为192.168.111.162:5000/jdk1.8
[root@192 ~]# docker tag jdk1.8 192.168.200.129:5000/jdk1.8
此时再次查看 Docker 中的镜像,可以看到 jdk1.8 镜像已经被标记;
- 启动 registry 容器;
[root@192 ~]# docker start registry
registry
- 上传被标记的镜像至私有仓库;
[root@192 ~]# docker push 192.168.200.129:5000/jdk1.8
Using default tag: latest
The push refers to repository [192.168.200.129:5000/jdk1.8]
e5e377c11436: Pushed
6e64d4a7ac94: Pushed
174f56854903: Pushed
latest: digest: sha256:8699db7832cf89668b5812161c55e73454fbc0304d354d06ed0e6ce3ddc493ca size: 949
[root@192 ~]#
- 测试连接,再次在本地浏览器中输入
192.168.200.129:5000/v2/_catalog
进行访问,可以看到相较于刚创建的私有仓库列表中已添加了 jdk1.8;
jdk1.8 上传至私有仓库成功。