搭建 HTTPS 的 Docker registry 私有镜像服务

1. 拉取镜像

#镜像服务
docker pull registry:2
#这个镜像加密密码使用
docker pull registry:2.7.0

2.创建镜像存储目录

#创建文件夹
mkdir -p /srv/docker/registry/
#进入仓库目录
cd /srv/docker/registry/
#创建auth certs storage目录
mkdir auth certs storage

3.创建账号密码文件并加密

#进入
cd auth
docker run --entrypoint htpasswd registry:2.7.0 -Bbn docker docker > htpasswd

4. 准备 HTTPS 证书

我这边是通过阿里云申请的,申请好把公钥和私钥放入到 certs 目录下。如果没有阿里云,可以使用其他证书服务提供商或者自己生成一个,这个自己百度。
我申请的证书如下:
image.png


5.把公钥拷贝一份到 /etc/docker/certs.d/

cp docker.pem  /etc/docker/certs.d/域名:5000/

6.启动容器

docker run -itd -p 5000:5000 --restart=always --name registry \
-v /srv/docker/registry/certs:/certs \
-v /srv/docker/registry/auth:/auth \
-v /srv/docker/registry/storage:/var/lib/registry \
-e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.pem" \
-e "REGISTRY_HTTP_TLS_KEY=/certs/docker.key" \
-e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

7.测试

在电脑上登录 docker 仓库(我这里使用 nginx 做了反向代理 所以使用的是 443)
image.png
推送镜像测试

# 先拉取一个镜像
docker pull alpine:latest
# 打一个tag 443可以不用带端口
docker tag alpine:latest 域名:端口/alpine:latest
#推送
docker push 域名:端口/alpine:latest

image.png

拉取镜像测试

#把刚刚打tag的镜像删掉
docker rmi 域名:端口/alpine:latest

image.png

#拉取镜像
docker pull 域名:端口/alpine:latest

image.png

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    483 引用 • 905 回帖 • 2 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    919 引用 • 931 回帖 • 2 关注
  • 容器
    12 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...