Docker的库分官方的hub库和本地私有库,hub库不需要个人用户维护,直接pull里面的内容就可以了。我们这里只讨论私库的创建、维护、使用等问题。
一、在内网服务器搭建Docker私有库
1.搭建私有库需要官方的registry镜像,所以先要从hub库里 docker pull registry得到这个镜像,然后通过导入导出的方式(如果获取镜像的机器和作为内网docker服务器的机器不在一起)存储到内网服务器上。
2.启动registry容器
docker run -d -p 5000:5000 --restart=always --name registry registry
-d:后台运行
-p:宿主机断开:暴露容器端口
--restart=always:不受docker启停影响,只要启动docker服务,容器就运行。
--name:重定义容器名
3 私有库管理系统,nexus3:
获取方式有两个选择,既可以从docker hub上获取一个nexus3的镜像,也可以通过安装nexus3的应用实现,因为nexus3同时还可以管理jenkins和yum等信息,又不想用docker中的image反过来再管理docker,所以选择后一种方式。
nexus3本身是一个web应用,运行后内网访问进入系统。
创建一个hosted的docker库
定义私库名称,指定http端口即可。
此时用户可以准备向这个库里push内容
创建角色和用户
创建角色,选择所有和docker相关的权限,如果之前已经有角色,此步可以省略。
创建用户要选择对应的角色,也就是权限。这个用户被用来登录私库,下载局域网私有库中的内容到所在机器。
修改docker的配置文件,运行私库端口访问。
打开作为客户端的docker机器上 /etc/docker/daemon.json 文件(若没有可以新建一个),编辑如下内容:
{
"registry-mirror": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.253.150:9600","192.168.253.150:8230"
]
}
两个IP和端口表示,当前这台机器要访问位于这个IP上这个端口的私库。
配置完成后重启这个机器的docker服务。
从客户端的docker连接到服务器docker
4 联通服务器,可以执行push操作。
首先修改本地镜像的标签,例如要把镜像push到192.168.3.200:8230这个私库上
docker tag hello-world:latest 192.168.3.200:8230/hello-world:up
然后push新标签的镜像
docker push 192.168.3.200:8230/hello-world:up
命令行上完成推送
管理界面可以看到推送来的镜像。
至此完成了一次从docker客户端向私库推送镜像的操作,需要注意的是,无论向私库推送还是从私库下载,都需要docker login的登录状态。
5 登录私库服务器,执行pull操作。
假设当前机器为另外一个docker客户端,默认可以通过docker login连接到私库,由上面的截图我们可以看到,已知私库端口下,已经存储了一个名叫hello-world的镜像,标签为up,这样可以拼凑一个要pull的镜像全名:192.168.3.200:8230/hello-world:up,这个是能从私库上pull到的信息。
从私库取回的镜像,名称为192.168.3.200:8230/hello-world:up,如嫌不方便,可以再通过docker tag修改镜像名和标签。
该镜像可以在本地使用。