docker私有镜像仓库搭建教程

Published on 2024-08-06 16:40 in 分类: 软件 with 狂盗一枝梅
分类: 软件

本文将会介绍如何搭建docker私有镜像仓库registry以及设置用户密码访问。

一、服务端搭建

我是根据docker容器部署的registry私有镜像仓库,我将容器镜像数据、配置文件、访问的账户密码信息都放到了/root/docker-servers/register目录,因此首先需要创建工作目录:mkdir -p /root/docker-servers/register,之后的命令将会在该目录下执行。文件夹内目录结构如下

image-20240806160445273

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

查看生成结果:

image-20240806161347981

第二步:新建配置文件

新建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

启动完成后查看下容器,状态一切正常即可。

image-20240806162126122

二、客户端配置

客户端首先需要修改/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.


#docker #linux #镜像
目录
复制 复制成功