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