概述
虽然说使用公共的镜像仓库很方便,但是还是有一些不好的地方,比如网速的问题,dockerhub在中国是很慢的,还有就是上传到dockerhub上的镜像是所有人都可以访问的,如果我们想要一个速度快,而且不想给别人访问的仓库那么就需要自己搭建了,首先介绍一下我搭建仓库的本地环境,其实很简单,就是一台云服务器,一台树莓派,云服务器用来当仓库。
搭建仓库
搭建其实很简单,没有什么是一个镜像做不到的,如果不能,那就两个,搭建仓库最简单的做法,就是在dockerhub上pull下官方的仓库镜像 进行搭建就好了。你们可以在dockerhub上搜索registry,第一个就是,pull到本地就好,详细的使用指南,上面也有,如果觉得pull的速度太慢,那么可以使用阿里云大的镜像加速器
docker pull registry
为什么我使用云服务器当仓库呢,因为这个镜像是不支持arm架构的
接着创建一个目录用来存放上传过来的镜像
mkdir myregistry
之后使用下面命令来启动这个镜像
docker run -d -p 5000:5000 -v /root/myregistry:/var/lib/registry registry
注意一个问题是,如果你是阿里云的云服务器那么安全组对应的端口一定要打开,有的傻逼总是问我这样的问题
-d 表示这个容器在后台运行,-p就是端口映射,-v就是把docker容器中的/var/lib/registry目录映射到本地/root/myregistry中,这样一旦容器挂了那么数据还在
先从别的镜像仓库pull一个镜像
首先我们从别的仓库pull一个镜像,比如Ubuntu
docker pull ubuntu
接着我们有用这个镜像来做测试
配置树莓派上的docker
接着我们就是配置树莓派上的docker来使用我们自己搭建的仓库了
修改下面的文件,如果没有的话自己新建就好
vim /etc/docker/daemon.json
加上
{
"insecure-registries": ["ip:5000"]
}
注意json中的字段一定要是insecure-registries,因为默认你搭建的仓库是使用http去访问的,而docker客户端使用的是https去访问,所以就会报下面这个错误
server gave HTTP response to HTTPS client
而registry-mirrors就是用来配置https仓库的,比如阿里云的仓库
之后我们刚pull下来的镜像重命名,让它可以和仓库匹配
docker tag ubuntu ip:5000/ubuntu
接着就是push上去
docker push ip:5000/ubuntu
push完成之后你可以在云服务器下面这个目录上查看是不是push上去了
/root/myregistry/docker/registry/v2/repositories/ubuntu
之后删除本地的镜像
docker rmi 47.100.210.53:5000/ubuntu
docker rmi ubuntu
接着把镜像pull下来
docker pull 47.100.210.53:5000/ubuntu
如果一切都没有问题,那么就说明你成功了
欢迎关注我的博客www.bboy.app
Have Fun