出于内外网隔离的需求或者外网网络性能等需求,需要在公司内部搭建docker的yum私有源,方便内部进行docker的安装时直接使用yum指令进行
-
step 1 同步远程的文件 找一台磁盘空间足够大且能够访问download.docker.com的服务器,将download.docker.com的全部静态资源进行同步,使用如下指令:
1 mkdir /repo 2 cd /repo 3 4 5 wget -m https://download.docker.com/linux/centos/7/x86_64/stable/如果只想同步x86_64/stable下的内容可以使用
wget -m --no-parent https://download.docker.com/linux/centos/7/x86_64/stable/全部同步下来大概100G的空间
-
step 2 配置Nginx,内网可以通过http进行访问
Nginx是很好的静态资源访问的HTTP服务器
Nginx的安装可以参见网络资源,配置nginx的虚拟主机:
1server { 2 listen 80; 3 server_name download.docker.com; # 虚拟主机的主机名 4 5 #charset koi8-r; 6 7 location / { 8 root /repo/download.docker.com/; #目录指向同步的目录 9 autoindex on; 10 } 11} 12 13
需要注意的是download.docker.com需要内网DNS进行解析或者是手动进行本地的DNS映射 手动指定linux上就在/etc/hosts文件中追加记录即可,如图: 
- step 3 yum源的配置
检测机器是否能访问download.docker.com
如果不能访问,则在/etc/hosts上追加记录进行映射或者联系网络管理员查看DNS配置是否正确
在客户机器上的/etc/yum.repos.d/目录下创建文件 docker-ce.repo文件,也可以直接通过curl下载:
1cd /etc/yum.repos.d/ 2curl http://download.docker.com/linux/centos/docker-ce.repo -o docker-ce.repo
-
step 4 安装docker
yum -y install docker-ce
一般来说都能安装成功
- step 5 启动dockerd
进入到/lib/systemd/system目录中,添加文件docker.service,内容如下:
1[Unit] 2Description=Docker Application Container Engine 3Documentation=https://docs.docker.com 4After=network-online.target firewalld.service 5Wants=network-online.target 6 7[Service] 8Type=notify 9# the default is not to use systemd for cgroups because the delegate issues still 10# exists and systemd currently does not support the cgroup feature set required 11# for containers run by docker 12ExecStart=/usr/bin/dockerd --data-root=/data/docker 13ExecReload=/bin/kill -s HUP $MAINPID 14# Having non-zero Limit*s causes performance problems due to accounting overhead 15# in the kernel. We recommend using cgroups to do container-local accounting. 16LimitNOFILE=infinity 17LimitNPROC=infinity 18LimitCORE=infinity 19# Uncomment TasksMax if your systemd version supports it. 20# Only systemd 226 and above support this version. 21#TasksMax=infinity 22TimeoutStartSec=0 23# set delegate yes so that systemd does not reset the cgroups of docker containers 24Delegate=yes 25# kill only the docker process, not all processes in the cgroup 26KillMode=process 27# restart the docker process if it exits prematurely 28Restart=on-failure 29StartLimitBurst=3 30StartLimitInterval=60s 31 32[Install] 33WantedBy=multi-user.target
注意 --data-root对应的目录如果不存在启动会失败,也可以不指定--data-root,详细可以参考dockerd的配置选项
1systemctl enable docker.service 2systemctl start docker.service 3 4 5docker info #查看docker的信息 6
小结:
在内网环境下搭建私有的yum可以更加方便和快速的进行docker的安装,可以配合配置管理工具快速的部署多台docker服务器,下一篇会介绍如何使用nexus配置docker的私有registry和proxy registry,方便在内网直接拉去dockerhub上的镜像