部署Docker私有仓库并实现登录功能
本文最后更新于 2025-01-19,转载请标明原作者!
一、拉取镜像
docker pull registry:2.8.3
docker pull htpasswd
如果拉取不了,可以去看下这篇文章,马上跳转
二、创建数据卷对应的文件及文件夹
mkdir -p /www/docker_registry/data
mkdir -p /www/docker_registry/auth
touch /www/docker_registry/auth/htpasswd
如果想把数据放到其他目录,也可以将 /www/docker_registry/data(auth) 改成你想要放置数据的目录。
注意如果修改了这里的目录,那么下面的三(账号密码的存储文件)、四(docker-compose.yaml文件里的volumes)也要修改
三、为私有仓库设置账号密码
运行一个临时容器生成账号密码
docker run --entrypoint htpasswd httpd:2 -Bbn username password > /www/docker_registry/auth/htpasswd
注意username和password要改成你要设置的账号密码,/www/docker_registry/auth/htpasswd改成你的账号密码文件地址
四、编辑docker-compose.yaml文件
cd /www/docker_registry/
vim docker-compose.yaml
version: '3'
services:
docker_registry:
container_name: docker_registry
image: registry:2.8.3
ports:
- 5000:5000
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: "Registry Realm"
REGISTRY_HTTP_SECRET: secret
restart: always
volumes:
- /www/docker_registry/data:/var/lib/registry
- /www/docker_registry/auth/htpasswd:/auth/htpasswd
输入 wq! 保存退出。
REGISTRY_HTTP_SECRET: secret 其中的secret是随机字符串,可以自己修改,
五、修改daemon.json文件,添加私有仓库
vim /etc/docker/daemon.json
将私有仓库的地址添加进去,例如:
{
"insecure-registries": [
"your_private_registry_host:port"
],
"registry-mirrors": [
"https://docker.1panelproxy.com"
]
}
保存daemon.json以及重启docker
systemctl daemon-reload
systemctl restart docker
六、运行容器并登录到私有仓库
运行容器
docker-compose up -d
登录到私有仓库
docker login -u username -p password your_private_registry_host:port
如果不写your_private_registry_host:port,则默认为官方仓库Docker Hub
退出私有仓库
docker logout your_private_registry_host:port
如果不写your_private_registry_host:port,则默认为官方仓库Docker Hub
七、从私有仓库推送和拉取镜像
标记本地镜像
为了能够推送本地镜像到私有仓库,需要给该镜像打上一个标签,该标签需要包含私有仓库的地址、端口(如果非默认)、以及你希望使用的镜像名称和可选的标签(通常是版本号)。格式如下:
docker tag LOCAL_IMAGE:TAG YOUR_PRIVATE_REGISTRY_HOST:PORT/IMAGE_NAME:TAG
例如,如果你有一个名为 myapp
的本地镜像,并希望将其标记为 v1.0
并推送到本地的私有仓库:
docker tag myapp:latest localhost:5000/myapp:v1.0
推送镜像到私有仓库
完成标记后,可以将镜像推送至你的私有仓库:
docker push YOUR_PRIVATE_REGISTRY_HOST:PORT/IMAGE_NAME:TAG
从私有镜像仓库拉取镜像到本地
docker pull YOUR_PRIVATE_REGISTRY_HOST:PORT/IMAGE_NAME:TAG
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员七字节
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果