出于内外网隔离的需求或者外网网络性能等需求,需要在公司内部搭建docker的yum私有源,方便内部进行docker的安装时直接使用yum指令进行
step 1 同步远程的文件 找一台磁盘空间足够大且能够访问download.docker.com的服务器,将download.docker.com的全部静态资源进行同步,使用如下指令:
mkdir /repo cd /repo 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的虚拟主机:
server {
listen 80;
server_name download.docker.com; # 虚拟主机的主机名
#charset koi8-r;
location / {
root /repo/download.docker.com/; #目录指向同步的目录
autoindex on;
}
}
需要注意的是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下载:
cd /etc/yum.repos.d/
curl 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,内容如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --data-root=/data/docker
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
注意 --data-root对应的目录如果不存在启动会失败,也可以不指定--data-root,详细可以参考dockerd的配置选项
systemctl enable docker.service
systemctl start docker.service
docker info #查看docker的信息
小结:
在内网环境下搭建私有的yum可以更加方便和快速的进行docker的安装,可以配合配置管理工具快速的部署多台docker服务器,下一篇会介绍如何使用nexus配置docker的私有registry和proxy registry,方便在内网直接拉去dockerhub上的镜像