文章目录
docker仓库介绍
- Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
- Docker运行中使用的默认仓库是 Docker Hub 公共仓库
docker公有仓库和私有仓库的区别
- 公有仓库:Docker官方提供一个公共仓库,称为Docker Hub。任何人都可以在Docker Hub上创建帐户,并在其中存储和共享Docker镜像。
- 私有仓库:私有仓库是指由用户自己搭建、管理和维护的Docker仓库,可以自己选择存储位置和数据安全性,也可以和其他项目无缝集成。
docker hub
docker hub介绍
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
docker hub公共仓库使用
docker hub官网
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仓库 首先注册一个账号
创建一个公共仓库
私有仓库搭建(registry)
为什么需要搭建私有仓库
registry部署官网
- docker hub虽然方便,但是还是有限制
(1)需要internet连接,速度慢
(2)所有人都可以访问
(3)由于安全原因企业不允许将镜像放到外网 - 好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库。
registry工作原理
- 一次docker pull 或 push背后发生的事情
index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。
- Docker Registry有三个角色,分别是index、registry和registry client。
- index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息(Web UI、元数据存储、认证服务、符号化) - registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。 - Registry Client
Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
私有仓库部署
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
harbor仓库
harbor仓库介绍
- Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
- harbor使用Docker-compose快速部署
补充:为什么有了registry还需要harbor?
1、提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2、提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3、支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
harbor仓库部署(基础)
habor下载地址
首先清理环境
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配置证书之后
发现可以正常拉取
harbor仓库部署(添加用户及项目)
1.添加用户
2.添加项目
3.给新建项目添加用户
先来介绍一下怎么添加用户
添加私有项目
harbor仓库部署(添加功能)
官方参考文档
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上只能拉取已签名的镜像
清理环境重新安装部署
今天的文章docker仓库管理_docker容器是什么分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79634.html