惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 热门话题
Stack Overflow Blog
Stack Overflow Blog
B
Blog
WordPress大学
WordPress大学
Project Zero
Project Zero
P
Palo Alto Networks Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
T
Tailwind CSS Blog
Forbes - Security
Forbes - Security
F
Full Disclosure
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News: Ask HN
Hacker News: Ask HN
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Fortinet All Blogs
Cisco Talos Blog
Cisco Talos Blog
G
Google Developers Blog
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
O
OpenAI News
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
IT之家
IT之家
U
Unit 42
腾讯CDC
S
Security Affairs
C
Cisco Blogs
Schneier on Security
Schneier on Security
The Last Watchdog
The Last Watchdog
B
Blog RSS Feed
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
T
The Blog of Author Tim Ferriss

思有云 - IOIOX - docker compose

docker compose 部署配置 Awesome TTRSS 教程 - 思有云 docker 部署 dujiaoka 独角数卡自动售货系统 支持 X86 和 ARM 架构 - 思有云 Docker 安装 Gitea + Drone 开源代码仓库及 CI/CD 教程 - 思有云 分享收集,整合,编写常用和优秀服务的 Dockerfile 仓库 并已构建 docker 镜像直接使用 - 思有云 ARM 架构 Linux 使用 docker compose 教程 - 思有云 将 docker run 命令改为 docker-compose.yml 方便部署和维护 - 思有云 docker compose 部署迁移 Chevereto 图床程序教程 - 思有云
Docker Compose 部署配置和使用 Registry 私有镜像仓库 - 思有云
博主: Stille · 2021-06-25 · via 思有云 - IOIOX - docker compose

前言

早前本站介绍过使用docker官方registry来部署加速镜像仓库私有镜像仓库的教程.近期由于需要使用gcr.io谷歌的镜像仓库,发现国内无法访问,于是就着手在公网搭建自己的私有镜像仓库方便使用,同时配置HTTPS账号密码确保安全.

本文将安装部署,Push,Pull,查询,管理和删除镜像等基础功能分享给大家.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.


部署

安装服务端

本文以部署至公网,开启账号密码,并配置域名反向代理为例.
命令参数过多,为方便配置参数,建议使用docker compose部署.

创建 htpasswd 账号密码

启动一个一次性容器用于创建账号密码.密码文件路径以/root/registry/htpasswd为例,账号密码以admin12345678为例.

docker run --rm --entrypoint \
    htpasswd httpd:2 -Bbn \
    admin 12345678 > /root/registry/htpasswd

docker-compose.yml

volumes 挂载htpasswd密码文件,数据目录,时区文件.配置文件config.yml作为高级用户可选挂载.
environment 环境变量开启认证,并开启删除镜像功能.

version: "3"
services:
  registry:
    image: registry:2
    container_name: registry
    volumes:
      # - ./config.yml:/etc/docker/registry/config.yml
      - ./htpasswd:/auth/htpasswd
      - ./registry:/var/lib/registry
      - /etc/localtime:/etc/localtime
    ports:
      - 5000:5000
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_STORAGE_DELETE_ENABLED=true
    networks:
      - registry
    restart: always

networks:
  registry:

启动

docker-compose up -d

成功启动后私有镜像仓库内网地址为: 192.168.1.5:5000

配置域名

由于registry在公网访问默认需使用HTTPS协议,博主使用nginx配置反向代理和证书.具体配置文件参考如下:

upstream registry { 
    server 172.17.0.1:5000;
}

server {
    listen 80;
    server_name  registry.yourdomain.com;
    return 301 https://registry.yourdomain.com$request_uri;
}

server {
    listen 443 ssl;
    server_name  registry.yourdomain.com;
    gzip on;    

    ssl_certificate /your_ssl_path/registry.yourdomain.com.crt;
    ssl_certificate_key /your_ssl_path/registry.yourdomain.com.key;

    location / {
        proxy_redirect off;
        proxy_pass http://registry;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }
}

使用

登录

docker login registry.yourdomain.com
# 使用上文创建的账号密码 admin 12345678 登录

登出

docker logout registry.yourdomain.com

Push

将现有镜像tag为私有仓库镜像名

docker images
# 获取现有镜像的 IMAGE ID
docker tag 102816b1ee7d registry.yourdomain.com/mysql:8.0.13

Push 至私有镜像仓库

docker push registry.yourdomain.com/mysql:8.0.13

Pull

docker pull registry.yourdomain.com/mysql:8.0.13

管理

查看镜像仓库清单

curl -u admin:12345678 -X GET https://registry.yourdomain.com/v2/_catalog

查看镜像 tag 清单

curl -u admin:12345678 -X GET https://registry.yourdomain.com/v2/mysql/tags/list

删除镜像

确保docker-compose.yml环境变量中开启REGISTRY_STORAGE_DELETE_ENABLED=true

获取镜像 digest hash

curl -u admin:12345678 --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X GET https://registry.yourdomain.com/v2/mysql/manifests/8.0.13
# 获取 digest hash 如下
sha256:45a2a291xxx223123fc03d9be551e362b460exxs56787736919baa

删除镜像清单

curl -u admin:12345678 -I -X DELETE https://registry.yourdomain.com/v2/mysql/manifests/sha256:45a2a291xxx223123fc03d9be551e362b460exxs56787736919baa

清理磁盘空间

docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

手动删除目录

完成上述操作后还可以删除存储目录中的空目录文件,如不删除依旧可以被上述查看镜像仓库的命令查询到结果.
依照上文示例,挂载存储目录路径如下:

./registry/docker/registry/v2/repositories


结语

更多信息请参考官方文档


晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. 晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。
RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。

赞赏作者

如果喜欢我的文章,觉得对你有帮助,请随意赞赏!