Centos离线安装Docker引擎及Docker Compose(附一键卸载脚本)

发布于:2025-02-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

一、离线安装Docker

1、下载离线安装包

官方离线包下载地址 ,根据自己的系统下载对应版本,我这里下载x86_64

2、将下载的离线包上传到服务器并解压

 tar -zxvf docker-28.0.0.tar

3、拷贝解压后的文件夹到/usr/bin目录

cp -p docker/* /usr/bin

 4、创建Docker服务配置文件

vi /etc/systemd/system/docker.service

文件内容如下:

 
#####
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
 
[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
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
 
# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3
 
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s
 
# 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
 
# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
 
# 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
OOMScoreAdjust=-500
 
[Install]
WantedBy=multi-user.target
 
 

执行:wq保存并退出。

赋予文件执行权限

sudo chmod +x /etc/systemd/system/docker.service

5、加载服务配置文件并启动docker服务

# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动 Docker 服务 
sudo systemctl start docker

# 设置 Docker 服务开机自启(可选) 
sudo systemctl enable docker.service 

#查看docker版本
sudo docker -v

二、离线安装Docker Compose 

 1.下载Docker Compose离线包

下载地址:最新版Docker Compose

 选择适合自己机器的版本下载,我这里下载linux-x86_64

2、执行安装 

将下载的二进制文件拷贝到服务器,按照官方文档提示,将其复制到以下四个目录中的任意一个目录,如果没有则手动创建(注意赋予目录相对应的权限)

第一和第二个路径表示为所有用户安装 ,我这里使用的是第一个路径:

#拷贝二进制文件到/usr/local/lib/docker/cli-plugins目录,并重命名为docker-compose
sudo cp docker-compose-linux-x86_64 /usr/local/lib/docker/cli-plugins/docker-compose

#赋予目录执行权限
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

#创建软链接,让docker-compose命令在任何目录下都可执行(可选)
sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose

#查看版本以验证是否安装成功
docker compose version
#或
docker-compose -v

三、一键卸载脚本

1、卸载docker引擎

#!/bin/sh

read -p "卸载docker将删除所有容器和镜像,是否继续?(y/n):" confirm

if [ "$confirm" != "y" ]; then
    echo "取消卸载"
    exit 1
fi

echo "删除所有容器..."
docker rm $(docker ps -aq) -f
if [ -z "$(docker ps -q)"]; then
    echo "\e[32m删除所有容器成功\e[0m"
else
    echo "部分容器删除失败"
    exit 1
fi
echo "删除所有镜像..."
docker rmi $(docker images -q)

if [ -z "$(docker images -q)"]; then
    echo "\e[32m删除所有镜像成功\e[0m"
else
    echo "部分镜像删除失败,请检查..."
    exit 1
fi
echo "删除所有卷..."
docker volume rm $(docker volume ls -q)

echo "删除所有docker网络..."
docker network rm $(docker network ls | tail -n +2 | awk '{print $1}')

echo "停止docker服务"
systemctl stop docker

echo "移除docker引擎..." 
# 社区版docker删除方式,如果是debian系统,将yum替换为apt-get
sudo yum remove docker-ce docker-ce-cli containerd.io
# 旧版docker删除方式,如果是debian系统,将yum替换为apt-get
# sudo yum remove docker docker-common docker-selinux docker-engine
# 检查上一条命令的退出状态,0表示成功,非0表示失败
if [ $? -eq 0 ]; then
    echo "\e[32mdocker卸载成功\e[0m"
else
    echo "docker卸载失败!"
fi
echo "移除docker相关文件和目录..."
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 删除配置文件目录
sudo rm -rf /etc/docker
# 清理残留文件
sudo rm -rf /var/run/docker*

2、卸载docker-compose

#删除docker插件目录或直接删除docker-compose二进制文件即可
rm -rf /usr/local/lib/docker
#或
rm /usr/local/lib/docker/cli-plugins/docker-compose

 


网站公告

今日签到

点亮在社区的每一天
去签到