文章目录
Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库
私有仓库:是在局域网中搭建的docker仓库
公有仓库:是在公网中搭建的docker仓库
注:我们今天利用一台阿里云ECS服务器搭建一个公有仓库
仓库搭建流程
实验环境:一台ECS服务器 39.97.176.117
1、安装、启动docker
yum install docker -y
systemctl restart docker
docker -v
2、docker下载registry、busybox
registry用途:官方提供Docker Registry来构建仓库
busybox用途:我们需要把这个镜像上传到自己构建的仓库中,还可以从仓库下载它
docker search busybox
docker pull docker.io/busybox
docker search registry
docker pull docker.io/registry
3、给busybox镜像重命名
docker tag docker.io/busybox 39.97.176.117:5000/busybox:v2
4、启动registry镜像
docker run -itd -p 5000:5000 -v /data/registry/:/var/lib/registry/ docker.io/registry
5、上传busybox镜像到启动的registry容器中
docker push 39.97.176.117:5000/busybox:v2
(1)结果报错:
The push refers to a repository [39.97.176.117:5000/busybox]
Get https://39.97.176.117:5000/v1/_ping: http: server gave HTTP response to HTTPS client
(2)编辑docker主配置文件:/etc/sysconfig/docker
添加以下信息:
#允许不安全仓库39.97.176.117
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 39.97.176.117:5000'
#添加仓库39.97.176.117
ADD_REGISTRY='--add-registry 39.97.176.117:5000'
(3)重启docker容器:
systemctl restart docker
docker ps -a
docker start e3e16ba24caf #启动registry仓库docker容器
注:现在可以重新docker push了!就好了
6、从自己搭建的仓库中下载busybox镜像
注:下载之前需要把docker中与下载相同的镜像先删掉
docker rmi -f 39.97.176.117:5000/busybox:v2
docker pull busybox:v2
#下载的时候不用写docker pull 39.97.176.117:5000/busybox:v2
7、我们下载的镜像存储在哪里的呢?
注:在第4步中我们做了-v映射,所以可以从两个地方查看!
yum install tree -y
#宿主机:
tree /data/registry/
#registry仓库的docker虚拟机:
tree /var/lib/registry/
注意:-v映射只是单向的从虚拟机的文件若有改动会映射到宿主机的文件,在宿主机中删除文件是不会影响到虚拟机的,所以如果要删除仓库中的镜像,需要到registry仓库的docker容器中的相应目录去删除!
扫描二维码关注公众号,回复:
10350381 查看本文章
8、公有仓库+Nginx反向代理
因为我们用的是公网地址,现在在全国随便哪个已经联网的主机上都可以下载该仓库的镜像!修改一下该主机中的/etc/sysconfig/docker文件添加一下该仓库即可!
仓库优化建议:
首先我们可以做nginx+openssl做一个https,这样就不用添加"--insecure-registry"这个参数了
nginx虚拟主机配置:
注:像这个样子就不用-p映射端口了,然后上面所有步骤里面的39.97.176.117都需要改成www.wujincheng.xyz,/etc/sysconfig/docker文件里面也需要改39.97.176.117为www.wujincheng.xyz。