搭建 docker 私有仓库
使用官方镜像 registry 当作仓库
生成 http 认证文件
根据 username和password 生成文件 docker.htpasswd
1
| docker run --rm --entrypoint htpasswd httpd:alpine -Bbn username password > docker.htpasswd
|
准备 http 证书
运行仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| services: registry: image: registry environment: REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd REGISTRY_HTTP_TLS_CERTIFICATE: /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem REGISTRY_HTTP_TLS_KEY: /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem volumes: - ./docker.htpasswd:/etc/docker/registry/htpasswd - /etc/letsencrypt:/etc/letsencrypt - registry:/var/lib/registry volumes: registry:
|
反向代理
将运行的容器的 5000端口 方向代理出去 网址是 registry.$DOMAIN_NAME
修改 hosts
避免走公网, 本地上传更快
1
| echo "127.0.0.1 registry.$DOMAIN_NAME" >> /etc/hosts
|
本机使用
登录
1
| docker login registry.$DOMAIN_NAME
|
制作镜像
1
| docker tag nginx:latest registry.$DOMAIN_NAME/nginx:latest
|
上传镜像
1
| docker push registry.$DOMAIN_NAME/nginx:latest
|
他人使用
登录
1
| docker login registry.$DOMAIN_NAME
|
拉取镜像
1
| docker pull registry.$DOMAIN_NAME/nginx:latest
|
其他
如果docker login时报错
1
| Error saving credentials: error storing credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`
|
问题是系统缺少一个密码管理包gnupg, 它用于加密, 我们在登录时需要这个包将密码加密后才能完成
1
| apt install -y gnupg2 pass
|
参考资料