docker搭建本地私有仓库的实现

 更新时间:2023年12月28日 15:57:41   作者:@clt  
有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,本文主要介绍了docker搭建本地私有仓库的实现,感兴趣的可以了解一下

有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。

使用私有仓库有许多优点:

1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
2)提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

1、首先下载registry 镜像

docker pull registry

Docker 官方提供了一个搭建私有仓库的镜像 registry (注册服务器),只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了

目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。如果需要安装registry v2,只需下载registry:2.2即可。Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库

2、在daemon.json文件中添加私有镜像仓库地址

vim /etc/ docker/daemon.json
{
"insecure-registries": ["192.168.2.200:5000"],
#添加,注意用逗号结尾
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
systemctl restart docker.service

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下来的镜像

Docker容器的重启策略如下:

no:默认策略,在容器退出时不重启容器

on-failure: 在容器非正常退出时(退出状态非0),才会重启容器

on-failure:3 :在容器非正常退出时重启容器,最多重启3次

always: 在容器退出时总是重启容器

unless-stopped: 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

4、为镜像打标签

docker tag centos:7 192.168.2.200:5000/centos:v1

如果不对私有仓库命名的话,默认走的是公共仓库(docker hub),所以需要命名镜像。

私有仓库镜像的命名规则:宿主机ip地址:端口号/xxxx(需要更改的名称)

注意:当你对源镜像进行命名后,命名后的镜像名称也视为一个标签,因为id号是相同的。如果当源镜像删除,命名后的镜像依然会存在,因为删除的是一个标签。  

5、上传到私有仓库

docker push 192.168.2.200:5000/centos:v1

6、列出私有仓库的所有镜像

curl http://192.168.2.200:5000/v2/_catalog

7、列出私有仓库的centos镜像有哪些tag

curl http://192.168.2.200:5000/v2/centos/tags/list

8、先删除原有的centos的镜像,再测试私有仓库下载

docker rmi -f 8652b9f0cb4c
docker pull 192.168.2.200:5000/centos:v1

到此这篇关于docker搭建本地私有仓库的实现的文章就介绍到这了,更多相关docker搭建私有仓库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker容器启动设置固定IP的实现

    docker容器启动设置固定IP的实现

    本文主要介绍了docker容器启动设置固定IP的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 修改Docker容器内文件的三种实现方式

    修改Docker容器内文件的三种实现方式

    这篇文章主要介绍了修改Docker容器内文件的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • docker部署LNMP架构的方法

    docker部署LNMP架构的方法

    这篇文章主要介绍了docker部署LNMP架构的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Docker中的文件/文件夹的挂载映射方式

    Docker中的文件/文件夹的挂载映射方式

    通过命令行在宿主机与Docker容器间挂载和映射文件夹,实现数据共享,具体步骤包括:在宿主机创建文件夹并使用Docker命令将其挂载到容器指定位置,需注意容器名称与ID的使用差异
    2024-11-11
  • Jenkins Pipeline中Docker镜像构建与推送的常见问题及解决方案

    Jenkins Pipeline中Docker镜像构建与推送的常见问题及解决方案

    在现代 DevOps 实践中,Jenkins 作为一款流行的持续集成和持续交付(CI/CD)工具,被广泛应用于自动化构建、测试和部署流程,然而,在实际使用 Jenkins Pipeline 进行 Docker 镜像构建和推送的过程中,可能会遇到各种问题,本文将通过一个具体的案例给大家详细的介绍一下
    2025-01-01
  • Dockerfile构建Redis镜像的方法实现(yum方式)

    Dockerfile构建Redis镜像的方法实现(yum方式)

    本文主要介绍了Dockerfile构建Redis镜像的方法实现(yum方式),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • dockerfile结合go应用程序的简单应用代码示例

    dockerfile结合go应用程序的简单应用代码示例

    Dockerfile文件是一个包含了指令和参数的文本文件,用于自动化构建Docker镜像,这篇文章主要给大家介绍了关于dockerfile结合go应用程序的简单应用,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • docker实现导出、导入和数据搬迁

    docker实现导出、导入和数据搬迁

    本篇文章主要介绍了docker实现导出、导入和数据搬迁,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Docker如何使用nginx搭建tomcat集群(图文详解)

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这篇文章主要介绍了Docker使用nginx搭建tomcat集群的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • MacOS安装Docker的过程及遇到的坑

    MacOS安装Docker的过程及遇到的坑

    这篇文章给大家分享MacOS安装Docker的过程及遇到的坑,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下
    2018-01-01

最新评论