1 Docker仓库概述
Docker官方的Dockerhub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去,但是,有时候我们的服务器无法访问互联网,或者不希望将自己的镜像放到公网中,那么我们可以自己搭建私有仓库来存储镜像
Docker 官方提供了一个 registry 镜像来搭建私有仓库,只需把镜像下载下来,运行容器并暴露5000端口(registry服务默认监听的是5000端口),就可以使用了。
2 拉取registry镜像
[root@localhost ~]# docker pull registry
[root@localhost ~]# docker images3 创建私有仓库
[root@localhost ~]# mkdir /docker_registry
[root@localhost ~]# docker run -d --name registry -p5000:5000 \
-v /docker_registry/:/var/lib/registry \
--restart=always \
registry注:/var/lib/registry/ 这个目录是registry容器中存放镜像文件的目录,来实现数据的持久化
4 访问registry仓库
通过浏览器访问:http://私有仓库服务器地址:5000/v2/_catalog
能过够看到 {"repositories":[]} 表示私有仓库搭建成功
5 Docker添加仓库地址
在 /etc/docker/daemon.json 文件中添加私有仓库地址及端口
[root@localhost ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://d3p1s1ji.mirror.aliyuncs.com"],
"insecure-registries": ["仓库服务器IP:5000"]
}重启docker
[root@localhost ~]# systemctl restart docker6 为镜像打标签
为什么要打标签?如果镜像是上传到docker hub默认是不需要为镜像打标签,应为默认走的就是公共仓库(docker hub),如果是上传到本地私有仓库,那么标签是为了指定本地私有仓库的地址。
私有仓库镜像打标签语法:docker tag 原镜像名:tag 仓库地址:5000/镜像名:tag
为php7-mysql镜像打标签(要保证境镜像的tag是本地仓库地址与端口)
[root@localhost ~]# docker tag php7-mysql:v1 192.168.0.10:5000/php7-mysql:v1
[root@localhost ~]# docker images
192.168.0.10:5000/php7-mysql v1注:当你对源镜像打标签后,原镜像与新镜像ID号是相同的,删除镜像时如果按照镜像ID删除,则相同ID的所有不同标签的镜像也全部删除。
7 上传镜像到私有仓库
格式:docker push 镜像名:tag
[root@localhost ~]# docker push 192.168.0.10:5000/php7-mysql:v1上传后浏览器查看:http://192.168.0.10:5000/v2/_catalog
8 拉取仓库镜像至本地
先删除本地同名镜像文件在进行拉取:
[root@localhost ~]# docker rmi 192.168.0.10:5000/php7-mysql:v1
[root@localhost ~]# docker pull 192.168.0.10:5000/php7-mysql:v1
评论区