一、离线安装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