docker仓库
Docker Hub是一个由Docker公司负责维护的公共注册中心,它包含了超过15,000个可用来下载和构建容器的镜像,并且还提供认证、工作组结构、工作流工具(比如webhooks)、构建触发器以及私有工具(比如私有仓库可用于存储你并不想公开分享的镜像),但是私有仓库就跟github类似,都是收费的,而且速度也不是很快,如果我们为你仅仅只是为了个人使用,或者小公司范围内使用,我么可以在本地搭建自己的私有仓库。
1、搭建本地无认证的私有仓库
1、首先先下载,docker 为我们提供的搭建私有仓库的镜像
docker pull registry
2、执行如下命令,启动私有仓库
docker run -d --restart always \ ##启动docker时,自动启动该镜像
--name my-registry \ ##为镜像启动后容器的名字
-p 8000:5000\ ##端口映射,registry镜像默认暴露5000端口,我们可以通过设置本机8000端口映射到5000端口,此时我们就可以以通过8000端口访问
-v /root/my-registry/registry:/var/lib/registry \ ##将我们上传的镜像,保存到本地 /root/my-registry/registry 目录,防止因为,对registry 镜像操作失误,而造成数据丢失
registry ##镜像名,对应上面我们下载的构建私有仓库的镜像
3、查看结果
[root@love2 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
782ebd106f70 registry "/entrypoint.sh /etc…" 8 minutes ago Up 8 minutes 0.0.0.0:8000->5000/tcp my-registry
#此时我们已经看到了启动的镜像
4、此时我们通过浏览器访问主机所在的ip,v2/_catalog是一个默认路径
http://192.168.8.103:8000/v2/_catalog
结果如下,空仓库,因为我们还没有向里面推送镜像
{"repositories":[]}
5、推送本地镜像到私有仓库
1、先对要上传的镜像改名,使用的hello-world镜像通过pull命令拉取
docker tag hello-world 127.0.0.1:8000/hello:v1.0
2、查看本机已有的镜像
[root@love2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest f32a97de94e1 5 months ago 25.8MB
127.0.0.1:8000/hello v1.0 fce289e99eb9 7 months ago 1.84kB
hello-world latest fce289e99eb9 7 months ago 1.84kB
3、推送镜像
[root@love2 ~]# docker push 127.0.0.1:8000/hello
The push refers to repository [127.0.0.1:8000/hello]
af0b15c8625b: Pushed
v1.0: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
#####这里可能会报一个异常,因为docker默认使用https协议进行传输,但是我们传输时使用的是http协议,因为我是在本机搭建的私有仓库,所以不会报错。但如果是远程服务器,我们为需要设置一下,允许使用http协议进行传输
修改下配置文件,vim /etc/docker/daemon.json
添加如下,[]内为你的ip和端口
{"insecure-registries":["127.0.0.1:8000"]}
4、我们再次访问,查看结果,此时已经有一个镜像了
http://192.168.8.103:8000/v2/_catalog
{"repositories":["hello"]}
6、拉取本地私有仓库镜像到本地
docker pull 127.0.0.1:8000/hello