搭建私有 Docker 镜像仓库
官方 Docker 镜像
拉取镜像:
bash
docker pull registry:2.8.3
启动 Docker Compose:
yaml
services:
registry:
image: registry:2.8.3
container_name: registry
restart: unless-stopped
ports:
- 5000:5000
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/registry:/var/lib/registry
保存 docker-compose.yml
文件,然后执行以下命令启动 Docker 镜像仓库:
bash
docker-compose up -d
推送镜像:
bash
docker tag $IMAGE_NAME xxxxxx:5000/$IMAGE_NAME
docker push xxxxxx:5000/$IMAGE_NAME
docker rmi xxxxxx:5000/$IMAGE_NAME
拉取镜像:
bash
docker pull xxxxxx:5000/$IMAGE_NAME
docker tag xxxxxx:5000/$IMAGE_NAME $IMAGE_NAME
docker rmi xxxxxx:5000/$IMAGE_NAME
在局域网中,客户端可配置允许不安全的 HTTP 服务:
json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["xxxxxx:5000"]
}
添加用户认证
yaml
services:
registry:
image: registry:2.8.3
container_name: registry
restart: unless-stopped
ports:
- 5000:5000
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/registry:/var/lib/registry
- ./data/auth:/auth
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
通过 htpasswd
命令生成密码:
bash
htpasswd -Bc ./data/auth/htpasswd $USER_NAME $PASSWORD
添加 SSL 证书
自签名证书生成
如果你使用公共 SSL 证书请跳过这一节。
请参考 自签名证书生成 来生成一张局域网内的 SSL 证书,需要客户端安装内网 CA 证书以便能够拉取/上传镜像。
- Windows 系统下,请将证书安装到 受信任的根证书颁发机构 中,然后重启 Docker Desktop。
- Linux 系统下,将证书放到
/etc/docker/certs.d/xxxxxx:5000/ca.crt
中,然后重启 Docker Daemon。 - MacOS 系统下,将证书安装到 钥匙串访问 中,设置始终信任此证书,然后重启 Docker Desktop。
配置 Docker Registry
yaml
services:
registry:
image: registry:2.8.3
container_name: registry
restart: unless-stopped
ports:
- 5000:5000
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/registry:/var/lib/registry
- ./data/certs:/certs
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/xxxxxx.crt
REGISTRY_HTTP_TLS_KEY: /certs/xxxxxx.key
Docker-Harbor
TODO 参考 Docker-Harbor 搭建私有 Docker 镜像仓库。