• 搭建Docker私有镜像仓库


    一、Docker镜像和容器的区别

    Docker的整个生命周期由三部分组成:镜像(image)+容器(container)+仓库(repository)

    容器等于镜像加上可读层,容器是由镜像实例化而来的。简单来说,镜像是文件,容器是进程,容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件

    二、搭建Docker私有镜像仓库

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

    注意:私有存储库是基于docker hub在线存储库的registry镜像搭建的

    1、docker hub在线存储库拉取registry镜像

    docker pull registry
    
    • 1

    2、创建帐号密码文件夹

    cd /opt/
    mkdir auth
    cd /auth/
    
    • 1
    • 2
    • 3

    3、写入帐号密码,生成帐号密码文件

    echo "user:test passwd:123456" >htpasswd
    
    • 1

    4、加密帐号密码文件

    docker run --entrypoint htpasswd registry:latest -Bbn test 123456 >auth/htpasswd
    
    • 1

    5、启动registry容器,默认端口5000映射到5000

    docker run ?-d -p 5000:5000 --restart=always --name registry 
    
    • 1

    部分参数说明:

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

    6、配置私有仓库地址

    vim /etc/docker/daemon.json
    
    • 1

    添加以下配置

    {
    ?? ?"insecure-registries": ["私有仓库IP:5000"]
    }
    
    • 1
    • 2
    • 3

    7、重启docker

    systemctl restart docker
    
    • 1

    浏览器访问http://私有仓库IP:5000/v2/_catalog

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

    systemctl stop firewalld
    
    • 1

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

    sudo systemctl restart docker
    
    • 1

    然后重新运行一下registry容器

    docker restart registry容器ID?
    
    • 1

    8、登录私有仓库

    docker login 私有仓库IP:5000
    
    • 1

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

    docker hub在线存储库拉取hello-world镜像

    docker pull hello-world
    
    • 1

    标记hello-world该镜像需要推送到私有仓库

    docker tag hello-world:latest 私有仓库IP:5000/hello-world:latest
    
    • 1

    通过push指令推送到私有仓库

    docker push 私有仓库IP:5000/hello-world:latest
    
    • 1

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

    格式如下

    docker pull 私有仓库IP:5000/镜像名称:镜像版本号
    
    • 1

    以hello-world为例

    docker pull 私有仓库IP:5000/hello-world
    
    • 1

    三、JAVA项目中配置Docker私有仓库

    在pom.xml文件的properties节点里添加以下配置

    项目名称
    私有仓库IP:5000
    1.4.13
    
    • 1
    • 2
    • 3
  • 相关阅读:
    前端快速入门Koa.js
    算法学习笔记-LeetCode215-数组中的第K个最大元素
    演讲回顾 | 龙智专家分享“支撑、共享与安全:芯片开发中的数字资产管理”
    右岸物联面经
    订单。。。
    与实体展厅相比,VR虚拟展厅都有哪些优点呢?
    Boosting以及代表算法(Adaboost、GBDT)介绍
    手动开发-简单的Spring基于XML配置的程序--源码解析
    java毕业设计的自助旅游导航系统(附源码、数据库)
    Python实操:内存管理与优化策略
  • 原文地址:https://blog.csdn.net/m0_67403013/article/details/126600165