nginx 搭建docker 似有hub仓库

当使用 SSL/TLS 证书并希望通过 HTTPS 访问 Docker Registry 时,通常会使用 Nginx 作为反向代理。这样做可以为 Docker Registry 提供 HTTPS 支持,同时还可以利用 Nginx 的其他功能,如负载均衡和缓存。下面是使用 Nginx 作为反向代理设置私有 Docker Registry 的步骤:

1. 安装 Docker

如果您的服务器上还没有 Docker,请首先安装:

bash 复制代码
sudo yum install docker
sudo systemctl start docker
sudo systemctl enable docker

2. 运行 Docker Registry

首先,启动一个不带 SSL 的 Docker Registry 容器:

bash 复制代码
sudo docker run -d \
  --restart=always \
  --name registry \
  -v /path/to/local/directory:/var/lib/registry \
  -p 5000:5000 \
  registry:2

这里,/path/to/local/directory 是用于持久化存储 Docker 镜像的本地目录。

3. 安装 Nginx

安装 Nginx 服务器:

bash 复制代码
sudo yum install nginx

4. 配置 SSL 证书

将您的 SSL 证书(PEM 格式)和私钥(KEY 文件)放置到服务器上的一个安全的目录中,并确保 Nginx 可以访问它们。例如:

bash 复制代码
sudo mkdir -p /etc/nginx/certs
sudo cp path/to/your/certificate.pem /etc/nginx/certs/
sudo cp path/to/your/private.key /etc/nginx/certs/

5. 配置 Nginx 作为反向代理

创建一个 Nginx 配置文件,以便将请求从 HTTPS 端口代理到您的 Docker Registry。例如,创建一个新的配置文件 /etc/nginx/conf.d/docker-registry.conf

nginx 复制代码
server {
    listen 443 ssl;
    server_name hub.shtcetc.com;

    ssl_certificate /etc/nginx/certs/certificate.pem;
    ssl_certificate_key /etc/nginx/certs/private.key;

    client_max_body_size 0; # 无限制上传大小
    chunked_transfer_encoding on;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

这会配置 Nginx 从端口 443 接收 HTTPS 请求并将它们转发到本地的 5000 端口(Docker Registry 运行的地方)。

6. 启动 Nginx

启动 Nginx 服务并设置开机自启:

bash 复制代码
sudo systemctl start nginx
sudo systemctl enable nginx

7. DNS 配置

确保您的域名 hub.shtcetc.com 的 DNS 记录指向托管 Docker Registry 和 Nginx 的服务器 IP 地址。

8. 推送和拉取镜像

现在,您可以通过域名 hub.shtcetc.com 推送和拉取 Docker 镜像。

注意

  • 确保防火墙和安全组设置允许从 HTTPS 端口(443)访问。
  • 如果您的 SSL 证书是由受信任的 CA 签发的,客户端通常无需特别配置即可信任该证书。
  • 检查并定期更新您的 SSL 证书以防止服务中断。
  • 这些步骤假设 hub.shtcetc.com 域名已经指向您的服务器,并且服务器可以接受公共的 HTTPS 请求。
相关推荐
lys_8288 分钟前
【linux】解决NAT模型下使用Xshell连接虚拟机显示22端口connection failed问题
linux·运维·服务器
Mxsoft6199 分钟前
电力系统智能运维网络安全威胁检测与防御策略
运维·安全·web安全
序属秋秋秋1 小时前
《Linux系统编程之系统导论》【冯诺依曼体系结构 + 操作系统基本概述】
linux·运维·服务器·c语言·ubuntu·操作系统·冯诺依曼体系结构
roman_日积跬步-终至千里2 小时前
【Docker多节点部署】基于“配置即身份“理念的 Docker 多节点 StarRocks 高可用集群自动化部署方案
java·docker·微服务
piepis2 小时前
Doris Docker 完整部署指南
数据仓库·docker·doris·容器部署
LSL666_4 小时前
5 Repository 层接口
android·运维·elasticsearch·jenkins·repository
sg_knight6 小时前
Docker 实战:如何限制容器的内存使用大小
java·spring boot·spring·spring cloud·docker·容器·eureka
电棍2336 小时前
在docker a100云服务器运行vulkan->sapien->robotwin的经验(报错segmentation fault)
运维·docker·容器
云动雨颤8 小时前
访问宝塔面板安全入口404?SSH命令轻松解决
linux·运维·安全
NPE~8 小时前
[Linux命令分享]日志查看 — — less
linux·运维·less·常用命令·日志查看