Docker - Registry部署(私有镜像仓库)
像Dockerhub、阿里云这样的公共镜像仓库并不适应用于所有团队,另外因涉及内部镜像的机密和安全性,因此搭建一套私有仓库供给团队使用就显得尤为重要。
一、拉取镜像
docker pull registry
二、启动程序
# 创建镜像文件保存目录
mkdir -p /data/docker-registry/auth /data/docker-registry/registry
# 注意:将 USERNAME 和 PASSWORD 替换为自己的用户名和密码
docker run --name tmp_htpasswd --entrypoint htpasswd httpd:2 -Bbn USERNAME PASSWORD > /data/docker-registry/auth/htpasswd && docker rm tmp_htpasswd
# 创建临时容器并Copy配置文件到目录
docker create --name docker-registry registry \
&& docker cp docker-registry:/etc/docker/registry/config.yml /data/docker-registry/srv-config.yml \
&& docker rm docker-registry
# 启动程序
docker run -d \
-p 5000:5000 \
--restart=unless-stopped \
--name docker-registry \
-v /data/docker-registry/registry:/var/lib/registry \
-v /data/docker-registry/auth:/auth \
# 把配置文件挂载到本地,方便修改和保存
-v /data/docker-registry/srv-config.yml:/etc/docker/registry/config.yml \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=basic-realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
三、访问测试
pull
和push
镜像时,需要先登录
# 可以将IP:5000,配置成https域名方便使用
docker login -u username -p password IP:5000
# 如果无法配置https协议,则需要修改docker配置
vim /etc/docker/daemon.json # 默认无此文件,需自行添加,有则追加以下内容。
{ "insecure-registries":["x.x.x.x:5000"] } # 指定IP地址或域名
systemctl daemon-reload # 守护进程重启
systemctl restart docker # 重启docker服务
四、管理界面
启动管理界面
docker pull joxit/docker-registry-ui:2.4.1
# 启动UI程序
docker run -d \
--name docker-registry-ui \
--restart=unless-stopped \
-p 8080:80 \
# docker-registry地址
-e REGISTRY_URL="x.x.x.x:5000" \
# 是否允许删除镜像
-e DELETE_IMAGES="true" \
# 自定义用户界面标题,非必须
-e REGISTRY_TITLE="Registry2" \
joxit/docker-registry-ui:2.4.1
修改registry
配置文件srv-config.yml
补充以下参数,以允许删除镜像
和UI访问
storage:
delete:
enabled: true
http:
headers:
X-Content-Type-Options: [nosniff]
Access-Control-Allow-Origin: ['<your docker-registry-ui url>']
Access-Control-Allow-Credentials: [true]
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
Access-Control-Allow-Headers: ['Authorization', 'Accept']
Access-Control-Max-Age: [1728000]
Access-Control-Expose-Headers: ['Docker-Content-Digest']
auth:
htpasswd:
realm: basic-realm
path: /auth/htpasswd
THE END
二维码
打赏
文章目录
关闭
共有 0 条评论