本文将会介绍如何搭建docker私有镜像仓库registry以及设置用户密码访问。
一、服务端搭建
我是根据docker容器部署的registry私有镜像仓库,我将容器镜像数据、配置文件、访问的账户密码信息都放到了/root/docker-servers/register目录,因此首先需要创建工作目录:mkdir -p /root/docker-servers/register
,之后的命令将会在该目录下执行。文件夹内目录结构如下
data:用于存放镜像数据的文件夹,创建命令:mkdir data
docker.registry:用于存放认证信息、服务启动配置文件的文件夹,创建命令:mkdir docker.registry
start.sh:用于创建容器的bash脚本。
第一步:创建密码
创建保存凭证的文件夹:
mkdir -p docker.registry/auth
安装httpd-tools:
yum -y install httpd-tools
创建之后用于访问私服的账号密码,并写入docker.registry/auth/passwd
文件
htpasswd -Bbn username password > docker.registry/auth/passwd
查看生成结果:
第二步:新建配置文件
新建docker.registry/config.yml
配置文件,内容如下所示
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete: #配置删除权限,默认安装的Registry不支持删除
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
第三步:启动服务
启动脚本start.sh
如下
docker run -d -p 5000:5000 \
--restart=always \
--name registry_private \
-v /root/docker-servers/register/docker.registry/auth:/etc/registry/auth \
-v /root/docker-servers/register/docker.registry/config.yml:/etc/docker/registry/config.yml \
-v /root/docker-servers/register/data:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/etc/registry/auth/passwd" \
registry:latest
启动完成后查看下容器,状态一切正常即可。
二、客户端配置
客户端首先需要修改/etc/docker/daemon.json
配置文件才能使用,添加如下配置
{
"insecure-registries":[
"192.168.3.106:5000"
]
}
修改完配置,需要重启docker:
systemctl restart docker.service
需要注意的是,如果是本地操作,这里的IP地址就是127.0.0.1,这样的话是不需要加上insecure-registries配置的;其它情况如果没有这一步,镜像操作会报错。
第一步:登录私服
docker login 192.168.3.106:5000
按部就班输入账号密码即可登录成功。
第二步:推送镜像到私服
这里不能直接推送,需要先给镜像打tag:
docker tag registry:latest 192.168.3.106:5000/registry:latest
然后再推送
docker push 192.168.3.106:5000/registry:latest
第三步:拉取镜像
拉取私服镜像需要带全名:
docker pull 192.168.3.106:5000/registry:latest
END.
注意:本文归作者所有,未经作者允许,不得转载