Docker - Registry部署(私有镜像仓库)

像Dockerhub、阿里云这样的公共镜像仓库并不适应用于所有团队,另外因涉及内部镜像的机密和安全性,因此搭建一套私有仓库供给团队使用就显得尤为重要。

一、拉取镜像

docker pull registry

二、启动程序

# 创建镜像文件保存目录
mkdir -p /data/docker-registry/auth /data/docker-registry/registry

# 注意:将 USERNAME 和 PASSWORD 替换为自己的用户名和密码
docker run --name tmp_htpasswd --entrypoint htpasswd httpd:2 -Bbn USERNAME PASSWORD > /data/docker-registry/auth/htpasswd && docker rm tmp_htpasswd

# 创建临时容器并Copy配置文件到目录
docker create --name docker-registry registry \
  && docker cp docker-registry:/etc/docker/registry/config.yml /data/docker-registry/srv-config.yml \
  && docker rm docker-registry

# 启动程序
docker run -d \
-p 5000:5000 \
--restart=unless-stopped \
--name docker-registry \
-v /data/docker-registry/registry:/var/lib/registry \
-v /data/docker-registry/auth:/auth \
# 把配置文件挂载到本地,方便修改和保存
-v /data/docker-registry/srv-config.yml:/etc/docker/registry/config.yml \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=basic-realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry

三、访问测试

pullpush镜像时,需要先登录
# 可以将IP:5000,配置成https域名方便使用
docker login -u username -p password IP:5000

# 如果无法配置https协议,则需要修改docker配置
vim /etc/docker/daemon.json        # 默认无此文件,需自行添加,有则追加以下内容。
{ "insecure-registries":["x.x.x.x:5000"] }  # 指定IP地址或域名

systemctl daemon-reload    # 守护进程重启
systemctl restart docker   # 重启docker服务

四、管理界面

启动管理界面
docker pull joxit/docker-registry-ui:2.4.1

# 启动UI程序
docker run -d \
--name docker-registry-ui \
--restart=unless-stopped \
-p 8080:80 \
# docker-registry地址
-e REGISTRY_URL="x.x.x.x:5000" \
# 是否允许删除镜像
-e DELETE_IMAGES="true" \
# 自定义用户界面标题,非必须
-e REGISTRY_TITLE="Registry2" \
joxit/docker-registry-ui:2.4.1
修改registry配置文件srv-config.yml补充以下参数,以允许删除镜像UI访问
storage:
  delete:
    enabled: true
http:
  headers:
    X-Content-Type-Options: [nosniff]
    Access-Control-Allow-Origin: ['<your docker-registry-ui url>']
    Access-Control-Allow-Credentials: [true]
    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
    Access-Control-Allow-Headers: ['Authorization', 'Accept']
    Access-Control-Max-Age: [1728000]
    Access-Control-Expose-Headers: ['Docker-Content-Digest']
auth:
  htpasswd:
    realm: basic-realm
    path: /auth/htpasswd

 

分享到:
本文链接:https://blog.renzicu.com/2023/06/221.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
THE END
二维码
打赏
文章目录
关闭
目 录