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