Docker搭建私有镜像仓库

 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,Docker 会去哪儿查找并下载镜像呢?

它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。

如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?

正因为这种需要,所以私有仓库也就有用武之地了。

所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

下面我们用官方提供的registry镜像来搭建私有镜像仓库,当然还有其它很多方法。

1.下载镜像registry

 

docker pull registry

 2.查看镜像是否pull下来了

 

 

 docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry   latest              b2b03e9146e1        2 weeks ago         33.29 MB

 3.运行registry容器

 

 

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest 

 参数说明

 

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;

4.测试镜像仓库中所有的镜像

 

 curl http://127.0.0.1:5000/v2/_catalog

 {"repositories":[]}

 

现在是空的,因为才刚运行,里面没有任何镜像内容

 

我们下载一个nginx的镜像

 

docker pull nginx

 

 

查看现在的镜像

 

docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx      latest              8b89e48b5f15        4 days ago          109 MB
docker.io/registry   latest              b2b03e9146e1        2 weeks ago         33.29 MB

 为镜像打标签

 

 

docker tag docker.io/nginx:latest 127.0.0.1:5000/docker.io/nginx:v1

 查看一下打好的tag:

 

 

 docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/docker.io/nginx   v1                  8b89e48b5f15        4 days ago          109 MB
docker.io/nginx                  latest              8b89e48b5f15        4 days ago          109 MB
docker.io/registry               latest              b2b03e9146e1        2 weeks ago         33.29 MB

 看一看到v1就是我们刚刚打的标签

 

现在我们把v1这个镜像上传到我们创建的私有仓库里面里面

 

 

docker push 127.0.0.1:5000/docker.io/nginx:v1

 查看仓库里面是否已经有了我们刚刚push的镜像

curl  http://127.0.0.1:5000/v2/_catalog
{"repositories":["docker.io/nginx"]}

 至此镜像已经上传到私有仓库了

我们可以测试一下,从私有仓库里面拉取刚刚push上去的nginx镜像

docker pull 127.0.0.1:5000/docker.io/nginx:v1

 

发现镜像成功的被拉下来

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值