在有的项目场景中,服务器是不允许连接外网的。此时若想在服务器上安装部署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,一键操作也很方便。
centos7-linux安装docker(离线方式) - 青阳闲云 - 博客园
Linux 离线安装docker的过程(一键式安装)_黑科技王子的博客-CSDN博客