私有私有仓库
有时候使用Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。下面是基于v2.x版本。
仓库也是一个镜像,直接从官方拉取安装:
docker run -d -p 5000:5000 --restart=always --name registry registry
镜像里已经存在了,并且已经开始运行了。
仓库
有时候使用Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。下面是基于v2.x版本。
仓库也是一个镜像,直接从官方拉取安装:
docker run -d -p 5000:5000 --restart=always --name registry registry
镜像里已经存在了,并且已经开始运行了。
这将使用官方的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下,可以通过-v参数来讲镜像文件存放在本地的指定路径。
例如
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 其实就是之前说的挂载。
推送仓库:
先用docker tag标记一个镜像,然后推送他。上面的那个本地仓库地址应该是127.0.0.1:5000。
把ubuntu:latest这个镜像标记为127.0.0.1:5000/ubuntu:latest
格式为
docker tag IMAGE[:TAG][REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest
推送 用docker push
docker push 127.0.0.1:5000/ubuntu:latest
用curl查看
curl 127.0.0.1:5000/v2/_catalog
我是在虚拟机上做的,我在我本机也可以通过虚拟机ip来访问仓库相关
拉取镜像 docker pull
docker pull 127.0.0.1:5000/ubuntu:latest
拉取之前可以先把本地的删除了
docker image rm 127.0.0.1:5000/ubuntu:latest
Ps:如果是想直接推送到类似这样的地址192.168.0.104因为docker默认不允许非https方式推送镜像,会出现这个
docker tag ubuntu:latest 192.168.0.104:5000/ubuntu:latest
docker push 192.168.0.104:5000/ubuntu:latest
这种问题的解决办法是 通过配置选项来取消这个限制或者是通过配置HTTPS访问。
我的ubuntu18.04是这么设置的
路径 /etc/docker/daemon.json (没有的话就创建这个文件)
内容:
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
],
"insecure-registries": [
"192.168.0.104:5000"
]
}
因为我配置过数据源,所以上面registry-mirrors里面多出来一些东西。配玩之后我继续推送
docker push 192.168.0.104:5000/ubuntu:latest 发现还是不行,然后我重启了下服务
sudo systemctl daemon-reload
sudo systemctl restart docker
之后就推送上去了。
使用 DockerCompose 搭建一个拥有权限认证、TLS 的私有仓库,相关这里略过。现在手上没证书。