docker的离线安装以及本地化配置
首先需要说明离线安装的适用场景:项目具有私有云,内外网分离,安全性要求比较高,相对在线安装,离线安装优势很大,方便,灵活,不需要配置yum源以及考虑整体网络环境的事情了,只需要关心局域网的网络就可以了。
废话不多说了,离线安装有RPM包安装方式,二进制安装包方式,源码编译安装方式,最为简便的方式为二进制安装包方式(没有rpm依赖问题,预编译和编译中,缺少依赖而失败的问题)。
一,下载docker的二进制安装包
Index of linux/static/stable/x86_64/,根据需要选择适合的版本,我的机器是centos7的因此选择的是稳定版本19.03.9,该版本的下载地址为:
https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz 这个网站是docker官方网站,速度还可以,比较人性话哦。
二,上传安装包到服务器,解压,移动解压的内容到系统环境变量路径内。
不得不说go语言的一大特色是所有东西都在一个文件里,文件比较大,同样二进制安装也是有限的几个文件,每个文件都几十兆。解压后的目录长这样:
[root@centos6 docker]# pwd
/root/docker
[root@centos6 docker]# ls -alh
total 191M
drwxrwxr-x 2 1000 1000 138 Nov 29 13:30 .
dr-xr-x---. 4 root root 203 Nov 29 13:30 ..
-rwxr-xr-x 1 1000 1000 32M May 15 2020 containerd
-rwxr-xr-x 1 1000 1000 5.8M May 15 2020 containerd-shim
-rwxr-xr-x 1 1000 1000 18M May 15 2020 ctr
-rwxr-xr-x 1 1000 1000 59M May 15 2020 docker
-rwxr-xr-x 1 1000 1000 66M May 15 2020 dockerd
-rwxr-xr-x 1 1000 1000 693K May 15 2020 docker-init
-rwxr-xr-x 1 1000 1000 2.8M May 15 2020 docker-proxy
-rwxr-xr-x 1 1000 1000 9.2M May 15 2020 runc
不到60M的安装包解压成了190M,压缩率还是可以的,dockerd是其中的主要执行文件哦(并不是谁体积大谁就重要)
mv docker/* /usr/local/bin/ #移动解压出的文件夹下的内容到系统环境变量路径。
三,将docker加入系统服务,设置开启启动并启动docker服务。
[root@centos6 ~]# vim /etc/systemd/system/docker.service #文件内容如下:
cat > /etc/systemd/system/docker.service<<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd --graph=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
本地化的配置:
说一下,什么是本地化。因为docker是国外公司的软件,而docker三要素之一 仓库是以国外的docker镜像站为基准的,我们离的太远以及各种因素导致网速不够,影响docker的使用体验,需要将该软件连接的仓库改为国内的地址,提高使用docker的体验。这一步使用脚本即可,脚本内容如下:
#!/bin/bash
#cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
#sed -i '/ExecStart/d' /etc/systemd/system/docker.service
#sed -i '13a ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --registry-mirror=https://b0j89uo8.mirror.aliyuncs.com -H unix:///var/run/docker.sock' /etc/systemd/system/docker.service
echo "{
\"registry-mirrors\": [\"https://b0j89uo8.mirror.aliyuncs.com\"]
}
" >/etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
验证:
[root@centos6 ~]# docker info
Client:
Debug Mode: false
Server:
Containers: 0 #实例没有 是0
Running: 0
Paused: 0
Stopped: 0
Images: 0 #镜像也没有
Server Version: 19.03.9
。。。。。。。。。。中间的一部分省略了
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://b0j89uo8.mirror.aliyuncs.com/
Live Restore Enabled: false
Product License: Community Engine
可以看到已经注册了仓库,地址为阿里云仓库。任意运行一个镜像生成容器,docke info命令可以看到大体信息:
[root@centos6 ~]# docker info
Client:
Debug Mode: false
Server:
Containers: 3
Running: 1
Paused: 0
Stopped: 2
Images: 1
Server Version: 19.03.9
。。。。。。。。。。。。。省略
运行了三个容器,两个停止掉了,一个正常运行。镜像就一个。