Docker私服搭建

配置加速

https://www.daocloud.io配置加速器

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxx.m.daocloud.io
# 重启服务
$ systemctl daemon-reload
$ systemctl restart docker
# 查看一下运行的效果
$ ps -aux | grep docker

我在CoreOS7系统上使用,上面的命令会修改配置文件

# 查看service的配置文件的位置
$ systemctl status docker.service
# 编辑配置文件
$ vi /usr/lib/systemd/system/docker.service

启动私服

使用register作为私服,官方网址

# 下载镜像
$ sudo docker pull registry:2.4.1
# 启动镜像
$ sudo docker run -d -p 5000:5000 registry 
# 使用本地数据
$ sudo docker run -d -p 5000:5000  --name dockerServer --restart=always -v /opt/registry-var/:/var/lib/registry/ registry:2.4.1 
# 查看运行结果
$ docker ps 
# 返回Json串表示正常启动了
$ curl http://192.168.31.101:5000/v2/_catalog

私服的地址:192.168.31.101:5000

上面的操作在进行push images的时候发生服务器500的错误!解决的方法如下

$ su -c "setenforce 0"
# 增加特权设置,完成私服搭建
$ docker run -d -p 5000:5000  --name dockerServer --restart=always -v /opt/registry-var/:/var/lib/registry/ --privileged=true registry:2.4.1 

使用私服

在CentOS7系统下,有两个地方可以配置参数:/lib/systemd/system/docker.service;/etc/sysconfig/docker
需要修改配置文件,配置文件中增加下面的内容,并且重新启动docker服务

# 配置私服地址
OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.31.101:5000'
# 需要配置通过IP访问ducker api,在未来通过maven打包会用到
--tls=false -H unix://var/run/docker.sock -H tcp://192.168.31.101:2375

当服务器正常启动之后,可以通过如下命令查看一下2375端口是否正常

netstat -nap | grep 2375
# 如果能返回一大坨信息则正常
curl http://192.168.31.101:2375/info

具体的使用方法

# 下载镜像
$ docker pull busybox
# 查看镜像
$ docker images
# 修改镜像的tag
$ docker tag busybox 192.168.31.101:5000/busybox
# 提交镜像
$ docker push 192.168.31.101:5000/busybox
# 删除本地镜像
$ docker rmi 192.168.31.101:5000/busybox
# 重新拉取镜像
$ docker pull 192.168.31.101:5000/busybox

疑难杂症

发现一个错误:宿主机直接打开的端口在网络可以访问;通过Docker映射的端口无法访问(不是防火墙的问题)
发现有一个警告

WARNING: IPv4 forwarding is disabled. Networking will not work.

解决的办法如下:

$ vi /etc/sysctl.conf
# 增加:net.ipv4.ip_forward = 1
# 重启网络服务
$ systemctl restart network
# 查看修改结果
$  sysctl net.ipv4.ip_forward

推荐阅读更多精彩内容