前言
什么叫docker私有仓库,字面就可以看的出就是面对有限范围提供docker镜像的docker服务器,个人部署有啥用呢?因为官方服务器被墙原因,现在部署拉取容器很难拉下来,能拉的也很慢。如果自己本地机器使用,可以更改源。如果我们需要经常需要在其他非本土地机器拉取部署容器,不能每次在新的机器上部署容器时都更改源,太麻烦了,直接建一个私有仓库,推送自己需要的镜像,每次在一个新地方部署容器时直接自己的仓库这样就很方便了。
局域网使用
在搭建前我们首先需要配置Docker信任地址,首先执行以下命令,打开要修改的文件
vi /etc/docker/daemon.json
将以下内容添加进去,IP为你要部署的私有仓库服务器IP,端口为容器映射的主机端口,注意与上部分内容之间一个逗号,因为是json格式的数据,记得保存后退出。
"insecure-registries":["http://10.10.10.2:8080"]
配置完后重载一下docker配置
systemctl daemon-reload
再重启一下docker服务
systemctl restart docker
如果在重启docker服务时出现以下错误,那就是你忘记了添加逗号。
外网服务器
例如registry所在服务器公网 IP 为 27.119.103.104 ,且防火墙开放了 5000 端口,但是没有配置域名和进行反向代理,那就填写服务器IP加端口号。
{
"insecure-registries": [
"27.119.103.104:5000"
]
}
如果你的registry所在服务器已经配置好了域名并开启了反向代理,并且配置了SSL,则可以不用配置daemon.json文件
拉取&部署
首先拉取registry镜像,Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能
别忘记修改成自己实际配置的端口和文件映射
version: '3.0'
services:
registry:
container_name: registry
image: registry
ports:
- 7080:5000
volumes:
- /smb/docker/registry:/var/lib/registry
restart: unless-stopped
使用
推送镜像到私有镜像服务必须先tag
比如我们本地已经拉取了一个emby的镜像,或者本地已经有一个我们自己制作的镜像,我想要将它推送到我们的私有镜像,首先tag本地镜像比如:linuxserver/emby
docker tag linuxserver/emby:latest 10.10.10.2:7080/emby:local
linuxserver/emby:latest就是原镜像名,10.10.10.2:7080/emby:local就是我们修改后的镜像名,emby和local可以随意更改
- 推送镜像
docker push 10.10.10.2:7080/emby:local
- 拉取镜像
docker pull 10.10.10.2:7080/emby:local
公网服务器
如果是私有镜像库部署在公网服务器上,直接将IP变成你的域名即可。
如果是带域名的服务器直接把IP和端口换成你的域名即可。
docker push 27.119.103.104:7080/emby:local
在Portainer中使用
在Portainer中使用如果是在局域网中或者公网服务器没有配置域名和ssl也要修改/etc/docker/daemon.json文件,否则会出现错误以下错误,意思说是发送的请求是https,而响应的却是http,所以错误。这也就说为什么拉取配置好反向代理和配置域名和ssl的私有仓库时不需要配置daemon.json文件,而能正常拉取了,因为目标服务器可以响应https请示。
添加注册表
拉取镜像
拉取成功