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修改镜像名和标签。

该镜像可以在本地使用。