基于Docker搭建私有镜像仓库

通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用,显然这在某些场景下是不适用的,比如某些互金的隐私项目,或者是公司完全处于内网状态不能访问外网,再或者你想个性化定制某些配置等等等,所以这就需要用到私有存储库了,今天我们就基于registry镜像搭建属于我们自己的私有仓库。

1、安装指令

docker pull registry

默认拉取最新版:

基于Docker搭建私有镜像仓库

2、配置私有仓库地址,如果没有就创建。

vim /etc/docker/daemon.json

输入如下参数,注意修改为自己的ip地址:

"insecure-registries": ["192.168.110.134:5000"]

:wq 保存退出,然后我们重启启动一下 docker

systemctl restart docker

3、创建容器

docker run -d -p 5000:5000 --name registry docker.io/registry

部分参数说明:

  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • --name:指定容器创建的名称

4、重新加载配置

sudo systemctl daemon-reload

然后浏览器访问,将IP换成自己的IP:http://192.168.110.134:5000/v2/_catalog 

基于Docker搭建私有镜像仓库

如果访问不到,尝试关闭防火墙:

systemctl stop firewalld

如果还是访问不不到,可以重启一下docker

sudo systemctl restart docker

然后重新运行一下容器。

5、验证上传镜像到私有仓库

我们使用HelloWorld镜像进行测试,首先先拉取一下:

docker pull hello-world

基于Docker搭建私有镜像仓库

拉取之后我们看一下镜像名称及版本:

基于Docker搭建私有镜像仓库

至此我们就有了一个 hello-world镜像,接下来我们使用 push 指令将镜像推送到刚刚搭建的registry中:

# 标记hello-world该镜像需要推送到私有仓库
docker tag hello-world:latest 127.0.0.1:5000/hello-world:latest

# 通过push指令推送到私有仓库
docker push 127.0.0.1:5000/hello-world:latest

基于Docker搭建私有镜像仓库

再来访问:http://192.168.110.134:5000/v2/_catalog

基于Docker搭建私有镜像仓库

我们可以看到私有仓库目录已经有刚刚推送上去的 hello-world 镜像了。

6、验证从私有仓库下载镜像

验证完了上传,我们再来测试一下下载镜像:

# 格式如下:
docker pull 127.0.0.1:5000/镜像名称:镜像版本号

# 以hello-world为例:
docker pull 127.0.0.1:5000/hello-world

基于Docker搭建私有镜像仓库

到这可能有的小伙伴就有疑惑了,你这通过ip能拉取吗,我看你一直用的127.0.0.1,毕竟私有仓库搭建完是要给别人用的嘛~

那么我们就测试一下:

docker  pull  192.168.110.134:5000/hello-world:latest

基于Docker搭建私有镜像仓库

ok,至此整个搭建过程完毕~

上一篇:Python之路【第十七篇】Django进阶篇


下一篇:黄口袋精灵 宝可梦皮卡丘 口袋妖怪黄 金手指 VBA GameShark GS 代码