欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker公有仓库及私有仓库

程序员文章站 2024-01-29 17:24:40
...

Docker仓库
1、什么是仓库
Docker仓库是用来存放镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
Docker运行中使用的默认仓库是Docker Hub公共仓库,可以i免费使用,也购买私有仓库。

在官方网站注册创建公共仓库并登陆网页创建
上传镜像

docker login									#登陆帐号
docker tag nginx:small 帐号/nginx:small		#上传镜像
docker push +镜像名称							#上传
docker search +名称
docker pull +名称

2、Registry工作原理
一次docker pull或者docker push背后步骤:
index服务主要提供镜像索引及用户认证功能。当下载一个镜像时,首先会在index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端在从registry下载镜像,在下载过程中registry会去index校验客户端token的合法性。
不同镜像可以保存不同的registry服务上,其索引信息都放在index服务上。
(1)index:
负责维护有关用户账户、镜像的校验以及公布命名空间的信息。
Web UI
元数据存储
认证服务
符号化
(2)registry:
镜像和图表的仓库,他不具有本地数据库以及不提供用户认证,通过Token的方式验证。
(3)registry client:
docker充当registry客户端来维护推送和拉去,以及客户端授权。

3、搭建私有仓库
由于安全原因企业可能不允许镜像放外网,需要创建私有仓库:
官方文件
https://docs.docker.com/registry/deploying/

docker search registry
docker pull registry
docker history registry:latest
docker volume ls		#查看数据卷
docker volume prune		#删除
docker run -d --name registry -p 5000:5000 registry	#端口映射
netstat -antlp			#端口配置成功
docker tag yakexi007/game2048:latest localhost:5000/game2048	#从本地上传私有镜像
docker push localhost:5000/game2048	#上传
docker pull localhost:5000/game2048	#拉取

Docker公有仓库及私有仓库
Docker公有仓库及私有仓库
Docker公有仓库及私有仓库
Docker公有仓库及私有仓库

4、开启私有库远程使用
在另一台主机上安装docker并开启

[aaa@qq.com /]# docker pull 172.25.1.1:5000/game2048
Using default tag: latest
Error response from daemon: Get https://172.25.1.1:5000/v2/: http: server gave HTTP response to HTTPS client
#加密需要认证
如果要访问非安全证书:
server2:
cd /etc/docker/
vim daemon.json
{
  "insecure-registries" : ["reg.westos.org:5000"]
}
vim /etc/hosts
172.25.1.1 server1 reg.westos.org
systemctl daemon-reload
systemctl restart docker

Docker公有仓库及私有仓库

docker pull reg.westos.org:5000/game2048	#拉取成功

Docker公有仓库及私有仓库
(1)在仓库主机加密认证
官方文件:
https://docs.docker.com/registry/insecure/
生成证书:

mkdir -p certs
[aaa@qq.com ~]# openssl req \
> -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key \
> -x509 -days 365 -out certs/westos.org.crt		#认证
[aaa@qq.com ~]# ls certs/
domain.crt  domain.key  westos.org.key

Docker公有仓库及私有仓库

(2)运行上传
官方文件:
https://docs.docker.com/registry/deploying/#get-a-certificate

docker run -d \						#运行证书
  --name registry \
  -v "$(pwd)"/certs:/certs \
  -v /opt/registry:/var/lib/registry \
  -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

docker tag ubuntu:latest reg.westos.org/ubuntu		#上传reg.westos.org/ubuntu

Docker公有仓库及私有仓库
Docker公有仓库及私有仓库

[aaa@qq.com ~]# docker push reg.westos.org/ubuntu	#报错
The push refers to repository [reg.westos.org/ubuntu]
Get https://reg.westos.org/v2/: x509: certificate signed by unknown authority

mkdir /etc/docker/certs.d/reg.westos.org
cp ~/certs/westos.org.crt .
mv westos.org.crt ca.crt				#改名		

Docker公有仓库及私有仓库
远程链接下载:

scp -r certs.d/ aaa@qq.com.25.1.2:/etc/docker/
docker pull reg.westos.org/ubuntu			#成功拉取

Docker公有仓库及私有仓库


相关标签: 运维实战 运维