五、仓库管理

于2022年4月15日重新编辑

一、仓库简介

仓库是集中存放镜像的地方,分为公共仓库私有仓库。

需要注意的是,注册服务器(registry)是存放仓库的服务器,一个注册服务器可以有多个仓库,每个仓库下面可以有多个镜像。

镜像分为官方提供的镜像用户提供的镜像

在OFFICIAL列显示OK的为官方提供的镜像。

带有用户前缀的为用户提供的镜像。

image-20210928224316384

二、公共仓库

下面介绍使用公共仓库存放我们的镜像。

2.1 注册一个账号

首先注册并登录docker官方网站

image

2.2 创建自己的公共仓库

image

2.3 登录hubdocker

docker login
Username: tz90
Password:
Login Succeeded

2.4 修改标签

修改标签格式,tz90是你注册的账号名,格式为hubdocker账户名/镜像名:标签

docker tag busybox tz90/busybox:latest

2.5 上传镜像

docker push tz90/busybox:latest

2.6 查看上传的镜像

image

搜索上传的镜像

image

三、第三方镜像市场

3.1 第三方镜像仓库

第三方镜像仓库有腾讯云,网易云,阿里云,时速云。

3.2 下载镜像

下面以腾讯云为例,注册登陆搜索复制仓库地址要一气呵成!

1)随便选一个ubuntu的镜像下载

2)选择镜像信息,复制仓库地址

image-20210929091654842

3)然后使用如下命令下载

 docker pull ccr.ccs.tencentyun.com/qcloud/ubuntu
 
 #改个名字,原来的名字太长了
 docker tag ccr.ccs.tencentyun.com/qcloud/ubuntu ubuntu:latest

四、搭建本地仓库

4.1 配置私有仓库

我们可以使用registry镜像来搭建一个本地私有仓库,方便内网环境的机器使用。

1)下载registry镜像

docker run -d -v /opt/registry:/var/lib/registry -p 5555:5000 \
--restart=always --name registry registry

:'
-v:将宿主机目录/opt/registry挂载到容器目录/var/lib/registry
-p:将宿主机端口5555映射为容器的端口5000
--restart=always:如果容器出现意外终止就重新启动
'

2) 给镜像重新打标记

docker tag ubuntu:18.04 10.154.0.110:5555/ubuntu:18.04

:'
需要将镜像重新打标记,格式为IP:端口/镜像名:标签
IP地址为宿主机的IP地址
端口为宿主机端口
'

3)设置docker可以通过http方式访问

vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://1byiy1iz.mirror.aliyuncs.com"],
    "insecure-registries":["10.154.0.110:5555"]
}

systemctl daemon-reload
systemctl restart docker

注意两行之间有逗号

如果没加入会出下如下报错image-20210929094212097

4)测试

#上传镜像
docker push 10.154.0.110:5555/ubuntu:18.04

#查看镜像
curl http://10.154.0.110:5555/v2/_catalog

#下载上传到私有仓库的镜像
docker pull 10.154.0.110:5555/httpd:latest

访问宿主机查看上传的镜像

image-20210929093511109

4.2 配置私有仓库认证

私有仓库没有配置认证,谁都能上传镜像,这是不安全的,接下来进行登录认证配置。

1)生成自签名证书

yum install openssl openssl-devel

vim /etc/pki/tls/openssl.cnf
[ v3_ca ]
#新增如下语句
subjectAltName = IP:10.154.0.110 #这里是宿主机IP

#生成证书,这里是宿主机IP加端口
mkdir -p /registry/certs && cd /registry/certs
openssl req -x509 -days 3650 -subj '/CN=10.154.0.110:5555/' -nodes -newkey rsa:2048 -keyout domain.key -out domain.crt

-x509:是一个自签发证书的格式
-days 3650:标识证书有效期
10.154.0.110:5555:标识具体部署Docker Registry本地镜像仓库的宿主机IP地址和端口号
rsa:2048:RSA私钥长度为2048bit
domain.key和domain.crt:就是生成的证书文件名

2)生成登录到私有仓库的用户名密码

cd /registry/ && mkdir auth
#这里账户为tz密码为123456
docker run --entrypoint htpasswd registry:2.7.0 -Bbn tz 123456 > /registry/auth/htpasswd

3)启动私有仓库

docker run -d -p 5555:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry -v /registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2.7.0

4)复制自己自行签发的CA根证书部署到其他机器中

mkdir -p /etc/docker/certs.d/10.154.0.110:5555
cp /registry/certs/domain.crt /etc/docker/certs.d/10.154.0.110\:5555/

#例如112也要使用私有仓库
scp /registry/certs/domain.crt 10.154.0.112:/etc/docker/certs.d/10.154.0.110\:5555/

5)重启docker

systemctl reload docker
systemctl restart docker

6)测试

#打标签
docker tag hello-world:latest 10.154.0.110:5555/hello

#登录
docker login 10.154.0.110:5555

#上传镜像
docker push 10.154.0.110:5555/hello

#退出账号
docker logout 10.154.0.110:5555

4.3 删除私有仓库的镜像

https://www.jianshu.com/p/b93feaf43f37

五、参考资料

posted @ 2020-01-26 15:27  努力吧阿团  阅读(304)  评论(0编辑  收藏  举报