目录
本文主要通过在建立本地仓库的基础上建立一个可供远程访问的私有仓库。笔者将按照自己建立的过程进行讲述,并且将在这过程中遇到的问题以及解决方法一并进行讲解。
笔者的思路是在一台Ubuntu系统下的电脑当作服务器建立仓库,然后后面建立成功之后在另一台win10系统的电脑上进行访问以及上传下载测试。
1.服务器建立仓库
1.注册容器
sudo docker run -d -p 5000:5000 --name server-registry -v /tmp/registry:/tmp/registry docker.io/registry:latest
2.标记镜像
如下是本地的镜像,选择ubuntu:14.04进行标记。
选择私有仓库的ip地址,此处docker0为虚拟地址,这里应该选择宿主机地址,对应网卡ens33,ip地址:218.197.198.84
标记ubuntu:14.04
sudo docker tag ubuntu:14.04 218.197.198.84:5000/ubuntu:14.04
3.上传镜像到私有仓库
sudo docker push 218.197.198.84:5000/ubuntu:14.04
可以看到以上报错了,这是因为安全原因报错。
4.解决方案
在服务器电脑上/etc/default/docker中标注仓库地址。
sudo vim /etc/default/docker
然后重启docker服务
service docker restart
接着将容器激活
检测仓库是否能够使用:
这说明仓库可以访问,但是无法上传镜像。
这时候需要在/etc/docker/文件夹下面建立一个daemon.json文件。
sudo vim /etc/docker/daemon.json
daemon.json内容:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["218.197.198.84:5000"]
}
然后重启服务
systemctl restart docker
sudo docker ps -a
sudo docker start 仓库容器id
最后重新上传文件,上传成功:
注意:这里的核心点就是两个配置文件的处理/etc/default/docker和/etc/docker/daemon.json。
2.客户端访问
这里以win10电脑作为客户机,对服务器上建立的私有仓库进行访问,http://218.197.198.84:5000/v2/_catalog
由上可以看出,在其它电脑上依然可以访问服务机建立的私有仓库。
1.客户机设置
如果直接在客户机输入:docker push 标记后的镜像,则会出现报错情况。那是因为如果不是,访问本地的仓库,那么需要跟设置远端私有仓库一样,要添加仓库ip:port和加速器。笔者使用的是win10,安装的是下图所示的软件:
右键点击桌面右下角,选择settings,进行如下图所示的设置,这个设置与之前服务器上设置的内容差不多。
2。客户机上上传镜像
客户机上直接使用windows powershell来操作docker。这里主要上传busybox镜像和mysql镜像为例。
上传busybox镜像:
docker tag busybox 218.197.198.84:5000/busybox
docker push 218.197.198.84:5000/busybox
上传mysql镜像:
docker tag mysql 218.197.198.84:5000/mysql
docker push 218.197.198.84:5000/mysql
这是上传前的仓库内容:
上传busybox和mysql之后的仓库内容:
3.下载镜像
这里主要以my-java-app:second为例,这里主要对java一个简单应用的下载镜像并使用,体现了docker的一个很好的移植性。
docker pull 218.197.198.84:5000/my-java-app:second
docker run -it 218.197.198.84:5000/my-java-app:second
运行过程如下所示:
因此,本文完整介绍了建立一个远端服务器的过程,并且在主服务器以及客户机上都能上传下载镜像。