内容目录

docker私有仓库

什么是私有仓库

私有仓库是一种用于存储docker镜像的仓库,该仓库仅在企业内部使用,不向外部提供服务。
使用私有仓库有以下几个好处:

  • 1.提高镜像下载速度:使用docker pull时,默认会从docker hub下载镜像可能需要很长时间,甚至会出现无法下载的情况,而私有仓库部署在企业内部网络环境中,无需从外部下载,所以私有仓库能有效提升镜像的下载速度。
    1. 提升镜像管理效率:通过私有仓库,可以将所有主机上的镜像统一存储,从而实现多主机共享一个仓库中的镜像。
    1. 保证镜像安全性:私有仓库是私有的,仅对公司服务器提供使用,能够保证镜像的安全性和私密性。

私有仓库实现工具

实现私有仓库有多种工具,其中较为常用的为registryharbor

  • 1.registrydocker官方开源的项目,是一款简单易用的私有仓库工具,虽然本身提供webui,但功能相对简单。
  • 2.harbor是一款广泛使用的私有仓库工具,它具有web界面管理、项目分类、安全控制、镜像同步、镜像扫描等功能,更加适合企业内部的镜像管理需求

registry实践私有仓库

registry私有仓库部署

  1. 部署registry
    docker run -d -p 5000:5000 --restart=always --name registry -v /data/myregistry:/var/lib/registry registry

  2. 检查部署结果,registry监听在5000端口

docker ps
CONTAINER ID   IMAGE                   COMMAND                   CREATED        STATUS        PORTS                                         NAMES
7cf795769b6e   registry                "/entrypoint.sh /etc…"   10 hours ago   Up 10 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp     registry

配置节点信任该仓库

  1. 修改docker配置文件
cat /etc/docker/daemon.json
{
  "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "http://hub-mirror.c.163.com",
        "https://cr.console.aliyun.com",
        "https://hub.docker.com",
        "http://mirrors.ustc.edu.cn"
    ],
  "data-root": "/data/docker",
  "insecure-registries": ["x.x.x.x:5000"]
}
  1. 重启docker
systemctl daemon-reload
systemctl restart docker.service

推送镜像至私有仓库

  1. 修改镜像的标签,然后推送镜像
# 推送linux-command应用⾄仓库的app项⽬中
docker tag wcjiang/linux-command:latest x.x.x.x:5000/app/linux-command
docker push x.x.x.x:5000/app/linux-command
  1. 使用curl命令访问registry私有仓库,检查是否存在对应上传的镜像
# 安装jq命令
yum install jq

# 查看仓库对应的镜像名称
curl -s http://x.x.x.x:5000/v2/_catalog | jq -r
{
  "repositories": [
    "app/linux-command"
  ]
}

# 查看仓库对应镜像的tag
curl -s http://x.x.x.x:5000/v2/app/linux-command/tags/list | jq
{
  "name": "app/linux-command",
  "tags": [
    "latest"
  ]
}

配置私有仓库认证

如果不添加任何认证,任何人都可以向该仓库推送镜像,因此我们可以给该私有仓库添加basic认证

  1. 启动带basic认证的registry
 yum install httpd-tools
# -B:使⽤bcrypt算法加密密码。-b:指定⽤户名和密码。 -n:在标准输出中显示内容,便于重定向⾄⽂件中
mkdir -p /data/registry-auth
htpasswd -Bbn xxx yyy > /opt/registry-auth/htpasswd
  1. 启动registry容器,并设定相应的身份信息
docker run -d -p 5000:5000 \
--name registry --restart=always \
-v /data/myregistry:/var/lib/registry \
-v /data/registry-auth/:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
  1. docker客户端先登录该仓库,而后进行镜像推送
docker login x.x.x.x:5000
Username: docker
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

# 镜像推送测试
docker push 192.168.99.31:5000/app/linux-command
Using default tag: latest
The push refers to repository [192.168.99.31:5000/app/linux-command]
bf98ff6fdad0: Layer already exists
968e161f40de: Layer already exists
1986c766d1ed: Layer already exists
397060e99d01: Layer already exists
36308b2b77fa: Layer already exists
latest: digest: sha256:dd4f744c563f57b3c117c5c7ce32fe0e51dd0a84cf959e697c6cb10d0be9b9f1 size: 1359
最后修改日期: 2024年9月16日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。