- 一、Dcoker仓库
- 1.什么是仓库
- 2. docker hub
- 二、Registry仓库原理及搭建
- 1.Registry工作原理
- 2.配置镜像加速器
- 3.搭建私有仓库
- Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
- Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
二、Registry仓库原理及搭建 1.Registry工作原理docker hub虽然方便,但是还是有限制
- 需要internet连接,速度慢
- 所有人都可以访问
- 由于安全原因企业不允许将镜像放到外网
好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库
- Docker Registry有三个角色,分别是index、registry和registry client。
- index
- 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
- Web UI
- 元数据存储
- 认证服务
- 符号化
- 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
- registry
- 是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过- Index Auth service的Token的方式进行认证。
- Registry Client
- Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
2.配置镜像加速器情景A:用户要获取并下载镜像。
情景B:用户要推送镜像到registry中。情景C:用户要从index或registry中删除镜像。
-
从docker hub上下载镜像的速度太慢,需要配置镜像加速器,这里以阿里云为例:(需要提前注册阿里云帐号)
-
配置docker daemon文件:
vim /etc/docker/daemon.json /// { "registry-mirrors": ["https://vo5twm71.mirror.aliyuncs.com"] } /// systemctl daemon-reload systemctl restart docker
docker pull registry #下载镜像 docker history registry docker run -d -p 5000:5000 registry:2 #运行registry容器 docker tag webserver:v1 localhost:5000/webserver:latest #给私有仓库添加标签 docker push localhost:5000/webserver #上传镜像到本地仓库 docker iamges
docker images
docker rmi localhost:5000/webserver:latest
docker pull localhost:5000/webserver:latest
为Docker仓库添加证书加密功能
mkdir -p certs docker ps lftp 172.25.254.250 > cd pub/docs/docker/openssl11/ > get openssl11-1.1.1g-3.el7.x86_64.rpm openssl11-libs-1.1.1g-3.el7.x86_64.rpm > exit yum install openssl11-1.1.1g-3.el7.x86_64.rpm openssl11-libs-1.1.1g-3.el7.x86_64.rpm
生成证书,重建registry容器:
openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -addext "subjectAltName = DNS:reg.westos.org" -x509 -days 365 -out certs/westos.org.crt docker run -d --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -p 443:443 registry cd certs/ mkdir -p /etc/docker/certs.d/reg.westos.org/ cp westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt ##拷贝证书到docker主机 docker tag nginx:latest reg.westos.org/nginx:latest docker push reg.westos.org/nginx:latest #测试上传镜像
为Docker仓库添加用户认证功能
yum install httpd-tools -y #下载认证工具 mkdir auth htpasswd -Bc auth/htpasswd admin #生成用户密码文件 cd auth/ cat htpasswd //admin:$2y$05$/Kx8NTcidQK5WOBQsRI76ewFMeBYKj81A4gZmvgFJQKkqtPQqI8oa docker ps docker rm -f registry docker run -d -p 443:443 --restart=always --name registry -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key registry docker ps docker push reg.westos.org/nginx:latest docker login reg.westos.org cat /root/.docker/config.json #查看登陆状态



