您的位置:首页 > 运维架构 > Docker

Docker私有仓库搭建

2017-08-27 17:13 260 查看

起因

众所周知的原因,我们访问 hub.docker.com 很慢,需要使用加速镜像,具体如何使用,请看官自行搜索,这里不做重点说明,这里要说的是另外一种加速的方法:搭建私有镜像。

环境说明

受制于开发环境,我在 Windows Server 2016 Standard 中构建了很多 Images, 计划在hyper-v中创建debian系统(纯命令版本,无GUI),在debian中搭建私有的docker镜像仓库,然后将Host(Windows Server 2016 Standard)中构建的镜像上传到 debian 中, debian中仓库中存放的镜像路径使用-v操作映射到debian系统的 root/registry 路径下。

Windows Server 2016 Standard 安装(略)
Hyper-v 安装(略)
在hyper-v中安装debian并配置
首先在hyper-v中新建一个虚拟网络交换机,类型选“外部”,选中物理网卡点确定;



下载最小的debian镜像(ISO文件),大概300多MB,设置启动镜像后,还要在hyper-v中选中虚拟机,在设置里面将安全启动项勾掉



安装debian系统(略)
配置sudo

由于安装的是网络版镜像,安装好的系统没有sudo,执行sudo command的时候会报
sudo: command not found
的错误,解决方案如下:

切换到root用户,输入root口令(安装debian的时候设置的)

$ su


更新软件源并安装sudo

$ apt update
$ apt install sudo


执行visudo修改sudoers(推荐),还有一种方式是 vi /etc/sudoers(不推荐)

...
# User privilege specification
root       ALL=(ALL) ALL
youruser   ALL=(ALL) ALL
...


不需要重启即可使用。

设置debian系统网卡

$ sudo vi /etc/network/interfaces


将动态获取地址注释掉,用如下代码代替

...
# The primary network interface
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.90
netmask 255.255.255.0
gateway 192.168.0.1


重新启动

$ sudo reboot


debian中安装docker

我用的是一键安装脚本

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh


测试安装

$ sudo docker info


开始搭建私有仓库(registry)

创建并运行registry

有了docker,一切都变得梦幻般美好,一个命令:

$ sudo docker run -d -p 5000:5000 -v /root/registry:/var/lib/registry  --restart always registry:2


解释一下参数:
-d 后台运行;
-p 5000:5000 端口映射 主机的5000端口(debian系统):容器的5000端口
-v 路径map,将主机的 /root/registry 路径 map 到容器的 /var/lib/registry
--restart always ,恩,这个解释起来优点麻烦,在我这里的意思是开机启动,官方的解释见Start containers automatically

这样,私有 registry 就运行起来了,且支持开机启动。

在 windows server standard 中设置虚拟机为自动启动



这样当物理机(windows server 2016)启动时,debian虚拟机会自动启动,debian系统内的docker 仓库也会自动启动
使用

tag 镜像

PS > docker tag windowsservercore-demo 192.168.0.90:5000/windowsserver-core-demo


上传镜像

先要修改配置文件daemon.json
windows下的路径是 c:/programdata/docker/config/daemon.json, linux下的路径 /etc/docker/daemon.json

在配置文件中增加节点:


{
"insecure-registries": ["192.168.0.90:5000"]
}


restart docker

PS > restart-service *docker*


上传

PS > docker push 192.168.0.90:5000/windowsserver-core-demo


用 curl 查看仓库中的镜像

PS > curl 192.168.0.90:5000/v2/_catalog

或者直接用网页打开 http://192.168.0.90:5000/v2/_catalog ,结果是一样的


下载镜像(局域网内可用)

PS > docker pull 192.168.0.90:5000/windowsserver-core-demo


参考资料

https://yeasy.gitbooks.io/docker_practice/content/repository/local_repo.html http://www.cnblogs.com/CloudMan6/p/6902325.html https://docs.docker.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: