docker构建私有registry

1. 启动registry

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry  registry

-p  端口映射; 宿主机:容器内端口
--restart-always 重启docker后自动拉起该容器
--name 指定容器名称
-v 挂在数据卷; 宿主机目录:容器内目录
registry 这就是一个镜像名称,如centos7一样
注: 启动起来的容器就用来作为私有的镜像仓库, 显然现在该仓库里什么也没有, 那么该如何操作呢?

2. 修改配置文件

docker pull时默认找的是docker官方的仓库, 既然要做私有的仓库, 首先记得修改配置让docker能识别本地仓库才行

vim /安装目录/daemon.json
{
   "insecure-registries": ["10.0.0.100:5000"]  -- 配置私有地址:端口
}

systemctl restart docker -- 重启后docker就能识别配置的该仓库了

3. 给本地镜像仓库上传镜像

使用push给镜像仓库上传镜像, 但是格式上有要求, 如下:
10.0.0.100:5000/name/nginx:v1
10.0.0.100:5000/项目名称/功能名:版本

上传第一步:
给要上传的镜像打tag
docker tag 镜像id 10.0.0.100:5000/name/nginx:v1

开始上传:
docker push 10.0.0.100:5000/name/nginx:v1

从仓库拉取镜像:
docker pull 10.0.0.100:5000/name/nginx:v1

4. 至此, 构建的私有镜像仓库就可以使用了, 但是不安全, 无验证功能, 如何添加?

4.1 本地仓库加安全认证

生成密码:
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd  -Bbn 账号 密码 > /opt/registry-auth/htpasswd

4.2 重新启动带有密钥功能的registry容器, 原来启动的容器不再使用

docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry  --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry 

-v 参数挂载了两个目录
-e 指定的这些是固定写法

 4.3 此时push是需要先登录再push, 否则报错

[root@oldboy ~]# docker login 10.0.0.100:5000
Username: 账号  
Password: 密码

 4.4 pull时不用登录认证就可以的, 至此构建私有镜像仓库就完成了, 

缺陷: 暂时不知道如何查看构建的私有镜像仓库中的所有上传的镜像

5. habor实现图形化register

第一步:安装docker和docker-compose
yum install -y docker-compose 
第二步:下载harbor-offline-installer-vxxx.tgz
第三步:上传到/opt,并解压
第四步:修改harbor.cfg配置文件
hostname = 10.0.0.11
harbor_admin_password = 123456
第五步:执行install.sh
原文地址:https://www.cnblogs.com/quzq/p/13483120.html