Docker Compose 私有仓库搭建 支持 HTTPS
Docker 是一个非常流行的容器化平台,允许用户将应用程序和其依赖项打包为一个独立的轻量级容器,并且可以在任何地方运行。Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多个容器的应用程序。
在某些情况下,我们可能需要在本地搭建一个私有的 Docker 仓库,并且希望能够通过 HTTPS 的方式进行安全访问。本文将介绍如何使用 Docker Compose 搭建一个私有仓库,并支持 HTTPS。
准备工作
在开始之前,我们需要确保系统已经安装了 Docker 和 Docker Compose 工具。这两个工具在官方网站上都有详细的安装指南。
创建 Docker Compose 文件
首先,我们需要创建一个 Docker Compose 文件来定义我们的私有仓库服务。在项目的根目录下创建一个名为 docker-compose.yml
的文件,并将以下内容添加到文件中:
version: '3'
services:
registry:
image: registry:2
ports:
- 5000:5000
volumes:
- ./data:/var/lib/registry
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
command: ["registry", "serve", "/etc/docker/registry/config.yml"]
networks:
- default
networks:
default:
external:
name: my-network
上述配置文件中,我们创建了一个名为 registry
的服务,使用 Docker 官方提供的 registry:2
镜像。我们将容器的 5000 端口映射到主机的 5000 端口,并将数据卷挂载到本地的 data
目录。
此外,我们还指定了证书和密钥文件的位置,并将其作为环境变量传递给仓库服务。最后,我们使用了一个自定义的网络 my-network
,你可以根据需要修改网络名称。
创建配置文件
在上述配置文件中,我们还指定了一个配置文件的路径 /etc/docker/registry/config.yml
,接下来我们需要创建这个配置文件。
在项目的根目录下创建一个名为 config.yml
的文件,并将以下内容添加到文件中:
version: 0.1
log:
level: info
formatter: json
fields:
service: registry
environment: development
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
tls:
certificate: /certs/domain.crt
key: /certs/domain.key
上述配置文件中,我们指定了存储方式为 filesystem
,并将根目录设置为 /var/lib/registry
。我们还指定了仓库服务的监听地址和端口,并且使用了之前设置的证书和密钥文件。
生成证书和密钥文件
接下来,我们需要生成证书和密钥文件,用于支持 HTTPS。可以使用 OpenSSL 工具来生成这些文件。
首先,打开终端并执行以下命令来生成私钥文件:
openssl genrsa -out domain.key 2048
然后,执行以下命令来生成证书签名请求文件:
openssl req -new -key domain.key -out domain.csr
在生成过程中,你需要提供一些证书信息,如国家、组织、通用名称等等。可以根据自己的需求进行填写。
最后,执行以下命令来生成自签名证书文件:
openssl x509 -req -in domain.csr -signkey domain.key -out domain.crt
现在,你可以将生成的 domain.crt
和 domain.key
文件移动到项目的根目录,并将其作为配置文件中指定的路径。
启动私有仓库服务
现在,我们已经完成了所有的准备工作,可以启动私有仓库服务了。
在终端中,进入项目的根目录,并执行以下命令:
docker-compose up -d
此命令将