docker安装脚本
Original...About 2 min
docker安装脚本
离线安装
准备工作:安装包下载
先去官网下载离线安装包,将离线安装包与离线安装脚本放在同一目录下,确定脚本中的DOCKER_TGZ
变量与下载的文件名称一致,此处以docker-26.0.0.tgz为例。
创建安装脚本
创建install_docker.sh
文件,将以下内容复制进脚本文件,保存。
#!/bin/bash
PWD=$(pwd)
DIR=$(dirname $0)
cd $DIR
# docker安装位置
DOCKER_INSTALL_DIR="/usr/bin/"
# 解压位置
DOCKER_EXE_DIR="./docker/"
# 下载的安装包文件名称
DOCKER_TGZ="docker-26.0.0.tgz"
# service文件,用于设置docker开机自启
DOCKER_SERVICE="/etc/systemd/system/docker.service"
# 临时service文件
DOCKER_SERVICE_LOCAL="./docker.service"
# 判断是否需要安装docker
if command -v docker &> /dev/null; then
echo "Docker is already installed."
else
echo "Docker is not installed. Start to install..."
# 创建安装目录
sudo mkdir -p $DOCKER_INSTALL_DIR
# 检测docker安装包文件是否存在,若不存在则下载
if ! [ -e $DOCKER_TGZ ]; then
echo "Download $DOCKER_TGZ..."
wget -O $DOCKER_TGZ https://download.docker.com/linux/static/stable/x86_64/$DOCKER_TGZ
fi
# 解压docker
mkdir -p $DOCKER_EXE_DIR
tar -xzf $DOCKER_TGZ
# 复制docker到安装目录
sudo cp $DOCKER_EXE_DIR/* $DOCKER_INSTALL_DIR
# 删除解压目录
rm -rf $DOCKER_EXE_DIR
# 写入文件内容
cat <<EOF > "$DOCKER_SERVICE_LOCAL"
[Unit]
Description=Docker Service
After=network.target
[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
EOF
# 复制docker.service文件
sudo cp $DOCKER_SERVICE_LOCAL $DOCKER_SERVICE
# 修改文件权限
sudo chmod +x $DOCKER_SERVICE
# 删除临时文件
rm $DOCKER_SERVICE_LOCAL
# 载入docker,启动,设置为自启动
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker
echo "Docker is installed successfully."
fi
# 判断是否需要sudo权限
# 尝试运行docker ps命令,如果成功则表示docker可以在无sudo的情况下运行
if docker ps > /dev/null 2>&1; then
echo "Docker can run without sudo"
else
echo "Remove sudo for docker commands..."
# 创建docker用户组,如果组已经存在,这个命令会失败,但我们可以忽略这个错误
sudo groupadd docker || true
# 将当前用户添加到docker用户组
sudo gpasswd -a ${USER} docker
# 修改docker.sock文件的权限,使得所有用户都可以读写
sudo chmod a+rw /var/run/docker.sock
# 重启docker服务以使改动生效
sudo systemctl restart docker
fi
cd $PWD
执行脚本
首先赋予脚本文件执行权限:
sudo chmod +x ./install_docker.sh
执行安装脚本,不要使用root权限:
./install_docker.sh
在线安装
最后放上官网的在线安装docker教程,步骤是这样的:
# 1. 删除旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 2. 更新apt仓库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 3. 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 4. 验证
sudo docker run hello-world