在有的项目场景中,服务器是不允许连接外网的。此时若想在服务器上安装部署docker容器,就不能采用在线方式了,不过可以采取离线方式进行安装。下面我们就一起看看离线安装的两种办法。
一种是分步安装法,一种是一键安装法。
首先在另一台可外网的电脑上,下载docker离线安装包。下载地址如下:
Index of linux/static/stable/x86_64/
这里我们选择稳定的社区版docker-18.06.3-ce.tgz。

下载好后,将文件docker-18.06.3-ce.tgz用WinSCP等工具,上传到不能外网的linux系统服务器上,这里用Centos7.9系统作为示例。

tar -zxvf docker-18.06.3-ce.tgz
解压后的文件夹docker中文件如下所示:

将docker中的全部文件,使用下边命令,复制到/usr/bin
cp ./docker/* /usr/bin
- cd /etc/systemd/system/
- touch docker.service

首先打开docker.service
vim docker.service
然后将下边内容复制到docker.service。
注意,将其中的ip地址,改成您的服务器地址,其它参数不用改。
--insecure-registry=192.168.205.230
- [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 --selinux-enabled=false --insecure-registry=192.168.205.230
- 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
编辑好后,ESC键à:wq保存并退出docker.service文件。
chmod +x docker.service
systemctl daemon-reload
注意,若修改了docker.service文件,则要重新加载该文件。
systemctl start docker
systemctl status docker

docker -v

systemctl enable docker.service
这样每次系统启动时,docker就自动随机启动了。
如果您觉得上边的步骤繁琐,也可以用下边的办法,一键安装docker。
在docker-18.06.3-ce.tgz同目录下,创建docker.service,打开编辑文件,文件内容与3.4节完全一样,此处不再赘述。
touch install.sh
打开编辑install.sh,将以下内容复制到install.sh,保存退出。
- #!/bin/sh
-
- echo '解压tar包'
- tar -xvf $1
- echo '将docker目录下所有文件复制到/usr/bin目录'
- cp docker/* /usr/bin
- echo '将docker.service 复制到/etc/systemd/system/目录'
- cp docker.service /etc/systemd/system/
- echo '添加文件可执行权限'
- chmod +x /etc/systemd/system/docker.service
- echo '重新加载配置文件'
- systemctl daemon-reload
- echo '启动docker'
- systemctl start docker
- echo '设置开机自启'
- systemctl enable docker.service
- echo 'docker安装成功'
- docker -v
Touch uninstall.sh,将以下内容复制到uninstall.sh,保存退出。
- #!/bin/sh
-
- echo '停止docker'
- systemctl stop docker
- echo '删除docker.service'
- rm -f /etc/systemd/system/docker.service
- echo '删除docker文件'
- rm -rf /usr/bin/docker*
- echo '重新加载配置文件'
- systemctl daemon-reload
- echo '卸载成功'
此时docker-18.06.3-ce.tgz同目录下,还有上边创建的docker.service,install.sh,uninstall.sh这3个文件:

分别给install.sh和uninstall.sh赋予可执行权限。
- chmod +x install.sh
- chmod +x uninstall.sh
开始安装
sh install.sh docker-18.06.3-ce.tgz
查看docker状态

一键安装法,其实是将分步安装法的步骤,集中写到一个shell脚本,其过程实质上是一样的,优点就是在一台新的机器上安装时,能节约时间,也不容易出错。如果想卸载docker,一键操作也很方便。