docker二进制文件安装
#!/bin/bash
# 版本号
docker_version=28.0.4
# docker包
docker_file_name=docker-${docker_version}.tgz
# 资源路径
docker_download_link=https://download.docker.com/linux/static/stable/x86_64/
# 下载链接
docker_download_url=${docker_download_link}${docker_file_name}
# 资源存储位置
src_dir=/usr/local/src/
# docker运行数据目录
data_dir=/data/
# 普通用户
ordinary_user=deploy
# 初始化系统参数
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 创建目录
mkdir -p ${src_dir} /etc/docker/ ${data_dir}docker/lib
chmod 755 /etc/docker/ ${data_dir}docker/lib
# 下载 Docker
echo "正在下载 Docker..."
wget ${docker_download_url} -O ${src_dir}${docker_file_name} || {
echo "下载失败,请检查网络和版本号"
exit 1
}
# 解压 Docker
echo "正在解压 Docker..."
tar -zxvf ${src_dir}${docker_file_name} -C ${src_dir} || {
echo "解压失败"
exit 1
}
# 复制二进制文件
chmod +x ${src_dir}docker/*
cp ${src_dir}docker/* /usr/bin/
# 创建 daemon.json
cat > /etc/docker/daemon.json <<EOF
{
"data-root": "${data_dir}docker/lib",
"insecure-registries": ["0.0.0.0/0"],
"bip": "10.1.2.1/24",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
chmod 644 /etc/docker/daemon.json
# 创建 systemd 服务文件
cat > /lib/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd
systemctl daemon-reload
# 启动并启用 Docker
systemctl enable docker
systemctl start docker
# 等待 Docker 启动
sleep 3
# 检查 Docker 是否运行
if ! systemctl is-active --quiet docker; then
echo "Docker 启动失败,请检查日志: journalctl -u docker"
exit 1
fi
# 创建 docker 组(如果不存在)
getent group docker >/dev/null || groupadd docker
# 设置 socket 权限
chown root:docker /var/run/docker.sock
chmod 660 /var/run/docker.sock
# 将普通用户添加到 docker 组
usermod -aG docker ${ordinary_user}
echo "Docker 安装完成!"
echo "请让用户 ${ordinary_user} 重新登录或执行: newgrp docker"