Docker之仓库

1 Docker 仓库简介

1.1 什么是Docker仓库

•Docker仓库就是存放docker镜像并有docker pull方法下载的云环境

•Docker仓库分为公有仓库和私有仓库。

公有仓库指Docker Hub(官方)开放给用户使用、允许用户管理(上传/下载)镜像。

​私有仓库指由用户自行搭建的存放镜像的云环境。

上传到Docker Hub公有仓库的镜像是开源的,公司的镜像肯定要自己搭建私有仓库进行管理。


1.2 Docker Hub公有仓库镜像管理

# 1 登录Docker Hub
docker login  输入用户名密码

# 2 给你要上传的image打个标签,标签名必须是用户名/镜像名称:版本号
docker tag 5452fa6715c0 liuqingzheng/mydjango:v
docker images  # 创建出来一个liuqingzheng/mydjango:v1 镜像,和原镜像id一样,它其实是一个软连接

# 3 把镜像上传到Docker Hub,也是分层的,这个镜像是在python3.6基础上装的项目,所以python3.6这一层不用上传
docker push liuqingzheng/mydjango:v1

# 4 从Docker Hub上拉取自己上传的镜像,也是分层,python3.6已经下载了就不会再下载
docker pull liuqingzheng/mydjango:v1

 

2 Docker 私有仓库搭建

私有仓库就是一个web服务,一般都搭建在公司内网,可以理解为私服版的Docker Hub

2.1 搭建无认证私有仓库

# 第一步:在需要搭建仓库的服务器(公司内网服务器)上安装docker

# 第二步:在服务器上,从docker hub下载registry仓库镜像,registry镜像里放的一个web项目,启动起来监听5000端口
docker pull registry

# 第三步:在服务器上,以registry镜像启动容器,拉起私有仓库服务
docker run -di --name=registry -p 5000:5000 registry
docker run -di --restart always --name=registry -p 5000:5000 -v /my-registry/registry:/var/lib/registry registry

# 注意:registry内部对外开放端口是5000。
# 默认情况下,镜像存放于私有仓库容器内的/var/lib/registry目录下,如果容器被删除,则存放于容器中的镜像也会丢失,因此做好目录映射。

# 本地利用curl 服务器IP:5000/v2/_catalog  查看当前仓库中的存放的镜像列表。
# 或者打开浏览器 输入地址http://服务器IP:5000/v2/_catalog看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空。

2.2 配置daemon.json

执行docker push命令时,上传到私有仓库,ip配置为内网地址,用于让 docker信任私有仓库地址

# 第一步 修改daemon.json
vim /etc/docker/daemon.json
添加以下内容,保存退出
{"insecure-registries":["服务器IP:端口"]} 
{"insecure-registries":["10.0.0.200:5000"]} 
    
# 第二步 重启docker 服务
systemctl restart docker

# 第三步 重启容器
docker start registry

2.3 私有仓库–上传、下载镜像

# 第一步:利用docker tag重命名需要上传的镜像,不加版本号默认latest
docker tag IMAGE 服务器IP:端口/IMAGE_NAME
docker tag 5452fa6715c0 10.0.0.200:5000/mydjango:v1  # 创建一个名字为10.0.0.200:5000/mydjango:v1的镜像,实际是软连接
    
# 第二步:利用docker push上传刚刚重命名的镜像到私有仓库
docker push 服务器IP:端口/IMAGE_NAME
docker push 10.0.0.200:5000/mydjango:v1 
    
# 第三步:从私有仓库拉取镜像
docker pull 10.0.0.200:5000/mydjango:v1 

# 注意:
	必须重命名为服务器IP:端口/IMAGE_NAME
	如果push出现了类似https的错误那么需要往配置文件/etc/docker/daemon.json里添加:”insecure-registries”:[“服务器IP:端口”]  
	然后重启docker,重启仓库容器

2.4 搭建带认证的私有仓库(一)

在服务器上:
	# 第一步:删除先前创建的无认证的仓库容器
		docker rm -f registry
	# 第二步:创建存放认证用户名和密码的文件:
		mkdir /my-registry/auth -p
	# 第三步:创建密码验证文件。注意将将USERNAME和PASSWORD替换为设置的用户名和密码
		docker run --entrypoint htpasswd registry -Bbn USERNAME PASSWORD > /my-registry/auth/htpasswd
	# 第四步:重新启动仓库镜像
docker run -di -p 5000:5000 --restart=always --name docker-registry \
-v /my-registry/registry:/var/lib/registry \
-v /my-registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry

2.5 带认证的私有仓库 -上传、下载镜像

在本地机器上:
# 第一步:首先登录到服务器
docker login -u username -p password 47.94.153.230:5000

# 第二步:然后执行pull或者push命令

# 第三步:操作完毕后,可以退出登录
docker logout 47.94.153.230:5000
 
# 如果想查看仓库中已有的镜像,那么需要进行http验证才可以。可以直接借助浏览器访问47.94.153.230:5000/v2/_catalog就可以访问了

# 注意这里:47.94.153.230指服务器IP

 

posted @ 2022-10-19 23:54  不会钓鱼的猫  阅读(159)  评论(0编辑  收藏  举报