docker进阶实战一:部署私有仓库

       这段时间开始一个新项目需要使用docker私有镜像仓库,然后通过私有镜像仓库完成新的docker镜像制作,包括tomcat、nginx负载均衡,最后开发web程序完成对从oracle数据库迁移至本地mysql数据库的数据表查询,查询程序与tomcat镜像包一并以docker镜像方式提交,这个项目的第一步是构建一个docker私有镜像仓库,所以今天我们先来完成docker私有镜像仓库的创建:

      在部署注册表之前,需要在主机上安装Docker。注册表是registry映像的实例,并在Docker中运行。生产环境中的注册表必须受TLS保护,理想情况下应使用访问控制机制。

       制作私有镜像的主要步骤:

    一、配置主机名:myregistryvip.com 修改/etc/hosts文件增加对myregistryvip.com的ip地址解析

    二、在本地或共享存储中创建用于保存认证信息、证书信息及镜像文件的三个目录,分别是auth、certs与data

    三、生成自签名证书文件,注意CN name的域名一定要与第一步配置的主机名一致;

    四、生成docker基本认证的用户名、密码

    五、创建docker-compose启动yaml文件并以后台方式启动

    六、测试使用docker登陆本地私有镜像

一、主机基础信息配置

主机名设置

hostnamectl set-hostname myregistryvip.com

hosts设置

二、目录设置

在home目录下新建三个目录auth certs data

三、自签名证书设置

openssl req \
  -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
  -x509 -days 365 -out certs/domain.crt

Common Name的设置与第一步设置的主机名一致即可。

四、创建用于docker登陆私有镜像的用户名、密码

例如:新建账号testuser 密码:testpassword

 docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword > auth/htpasswd

五、创建用于docker-compose启动私有镜像仓库的yaml文件docker-compose.yml

registry:
  restart: always
  image: registry:2
  ports:
    - 5000:5000
  environment:
    REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
    REGISTRY_HTTP_TLS_KEY: /certs/domain.key
    REGISTRY_AUTH: htpasswd
    REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
  volumes:
    - /home/data:/var/lib/registry
    - /home/certs:/certs
    - /home/auth:/auth

docker-compose up -d

用后台方式启动私有镜像仓库

六、使用docker新建账号登陆私有镜像仓库

docker login myregistryvip.com:5000

1、给准备上传到私有仓库的镜像打标

 docker tag centos:latest myregistryvip.com:5000/centos:latest

2、 将打标后的镜像上传到私有仓库

docker push myregistryvip.com:5000/centos:latest

3、观察本地持久化目录中是否有变化

du -h  data/ 

4、通过web的api接口访问查看效果

https://10.37.6.42:5000/v2/_catalog

 

https://10.37.6.42:5000/v2/centos/tags/list

七、排错

1、自签名证书common name输入与主机名不一致

重新部署证书修改common name与主机名一致后重启docker

2、自签名证书不安全无法通过认证

在/etc/docker/daemon.json中新增内容如下:

{
    "insecure-registries": [
        "myregistryvip.com:5000"
    ]
}

八、其他docker主机访问私有镜像仓库

1、修改hosts文件,增加私有镜像仓库的域名解析IP地址,如果有统一的dns则无需修改

 2、修改/etc/docker/daemon.json文件后重启docker

{
    "insecure-registries": [
        "myregistryvip.com:5000"
    ]
}

3、使用docker通过域名登录

4、拉取仓库镜像文件

docker pull myregistryvip.com:5000/centos:latest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值