赞
踩
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
1.首先在https://cloud.docker.com/网站注册一个账号
2.在docker hub上新建一个公共仓库
3.登录docker hub
docker login
4.上传镜像
docker images
docker tag kaminskypavel/mario:latest lyueyue/mario:latest
docker push lyueyue/mario:latest
5.在浏览器上查看
docker仓库 首先注册一个账号
创建一个公共仓库
1.下载registry镜像 docker pull registry 2.运行registry容器 docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry 3.给镜像打标签(本地镜像在命名时需要加上仓库的ip和端口) docker tag nginx:latest localhost:5000/nginx:latest 4.上传镜像至私有仓库 docker push localhost:5000/nginx:latest 5.测试 cd /opt/registry ls curl localhost:5000/v2/_catalog
现在搭建私有仓库
/opt/registry目录不存在也没有关系
准备工作 设置域名解析 1.生成证书(域名www.lyueyue.org要求在主机上有解析) mkdir -p certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout /root/certs/www.lyueyue.org.key -x509 -days 365 \ -out /root/certs/www.lyueyue.org.crt 2.停止运行中的registry或者直接删除 docker container stop registry 或者 docker rm registry 3.重建registry docker run -d --restart=always --name registry \ -p 443:443 \ -v /opt/registry:/var/lib/registry \ -v /root/certs:/certs \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/www.lyueyue.org.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/www.lyueyue.org.key registry 4.查看是否重建成功 docker port registry 5.拷贝证书到docker主机,不然无法上传下载。 mkdir -p /etc/docker/certs.d/www.lyueyue.org/ cp /root/certs/www.lyueyue.org.crt /etc/docker/certs.d/www.lyueyue.org/ca.crt systemctl daemon-reload systemctl restart docker 6.上传镜像 docker pull nginx:latest docker tag nginx:latest www.lyueyue.org/nginx:latest docker push www.lyueyue.org/nginx:latest
搭建私有仓库的步骤:
(1)在hosts文件里设置域名解析
(2)生成自签名证书以及密钥
(3)重建registry容器
如果原来有registry容器的话先停掉或删除原有的再进行重建
可以查看端口看是否重建成功
(4)拷贝证书到docker主机
(5)上传镜像
1.安装工具 yum install -y httpd-tools 2.建立目录 mkdir /root/auth cd /root/auth 3.生成用户密码文件 htpasswd -B -c /root/auth/htpasswd yueyue htpasswd -B -c /root/auth/htpasswd admin 4.重建registry docker rm -f registry docker run -d --name registry \ -p 443:443 \ -v /opt/registry:/var/lib/registry \ -v "$(pwd)"/certs:/certs \ -v "$(pwd)"/auth:/auth \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/www.lyueyue.org.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/www.lyueyue.org.key \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry 5.测试(此时不能上传和下载镜像) docker push www.lyueyue.org/nginx:latest 6.登录仓库(这次使用yueyue登录) docker login www.lyueyue.org 7.再次测试 docker push www.lyueyue.org/nginx:latest
补充:为什么有了registry还需要harbor?
1、提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2、提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3、支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
首先清理环境 docker rm -f registry cd .docker/ rm -fr config.json 1.解压harbor包 tar zxf harbor-offline-installer-v1.10.1.tgz 2.修改habor配置文件 cd harbor vim harbor.yml 3.安装docker-compose curl -L "https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 4.安装habor ./install.sh --help ./install.sh --with-notary #签名模块 --with-clair #扫描模块 --with-chartmuseum #K8S中用于软件包管理 ./install.sh --with-clair --with-notary --with-chartmuseum 4.查看安装情况 docker-compose ps 5.本地登录 docker login www.lyueyue.org 6.在本机测试 docker images docker tag nginx:latest www.lyueyue.org/library/nginx:latest docker push www.lyueyue.org/library/nginx:latest 7.配置别的虚拟机,并测试 scp /root/certs/www.lyueyue.org.crt server2:/etc/docker/certs.d/www.lyueyue.org/ca.crt scp /root/certs/www.lyueyue.org.crt server3:/etc/docker/certs.d/www.lyueyue.org/ca.crt ssh server2 systemctl restart docker ssh server3 systemctl restart docker
上传镜像测试,上传成功。
此时在server2上无法拉取镜像
给server2和server3配置证书之后
发现可以正常拉取
1.添加用户
2.添加项目
3.给新建项目添加用户
先来介绍一下怎么添加用户
添加私有项目
1.添加扫描功能(平时建议关闭,每扫描一次就会增加虚拟机大小) 2.测试(做完实验将其关闭) 3.添加签名功能 部署根证书 cp /root/certs/www.lyueyue.org.crt /etc/docker/certs.d/www.lyueyue.org/ca.crt mkdir /root/.docker/tls/www.lyueyue.org:4443/ -p cd /etc/docker/certs.d/www.lyueyue.org/ cp ca.crt /root/.docker/tls/www.lyueyue.org\:4443/ 启用docker内容信任 export DOCKER_CONTENT_TRUST=1 export DOCKER_CONTENT_TRUST_SERVER=https://www.lyueyue.org:4443 4.测试:上传镜像 docker images docker push www.lyueyue.org/library/busybox:latest 5.设置内容信任 6.在server2上测试 docker pull www.lyueyue.org/library/nginx:latest docker pull www.lyueyue.org/library/busybox:latest 7.取消签名机制,保留其不占用空间,为之后学习K8S作准备。 export DOCKER_CONTENT_TRUST=0 docker-compose down ./prepare ./install.sh --with-chartmuseum
开启上传时的自动扫描
上传镜像测试
发现镜像被自动扫描
添加签名功能
当项目更改时需要更改root密码,当项目没变动而项目中镜像版本发生变化时需要更改repository密码。
设置内容信任
在server2上只能拉取已签名的镜像
清理环境重新安装部署
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。