跳转到内容

install.sh

bash
#! /bin/bash

# 判断是否是root用户
if [ "$EUID" -ne 0 ]; then
    echo "请使用root用户执行"
    exit 1
fi

docker_version=29.4.3
docker_install_dir=/usr/local/bin

function docker_download() {
    curl -x http://192.168.60.1:12450 -LO https://download.docker.com/linux/static/stable/x86_64/docker-$docker_version.tgz
    if [ $? -ne 0 ] || [ ! -f "docker-$docker_version.tgz" ]; then
        echo "下载失败,请检查网络"
        exit 1
    fi
    curl -x http://192.168.60.1:12450 -LO https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64
    if [ $? -ne 0 ] || [ ! -f "docker-compose-linux-x86_64" ]; then
        echo "Docker Compose 下载失败,请检查网络"
        exit 1
    fi
    tar -zxvf docker-$docker_version.tgz
}

function docker_install() {
    cp -a docker/* $docker_install_dir
    mkdir -p /etc/docker
    mkdir -p /etc/systemd/system/docker.service.d

    cat >/etc/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=$docker_install_dir/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF

    cat >/etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "500m",
    "max-file": "3"
  },
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    }
  ]
}
EOF

    cat >/etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://192.168.60.1:12450"
Environment="HTTPS_PROXY=http://192.168.60.1:12450"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
    groupadd docker 2>/dev/null || true
    CURRENT_USER="${SUDO_USER:-$USER}"
    [ "$CURRENT_USER" = "root" ] && CURRENT_USER=""
    if [ -n "$CURRENT_USER" ]; then
        usermod -aG docker "$CURRENT_USER"
    fi
    systemctl daemon-reload
    systemctl enable --now docker
}

function docker_compose_install() {
    mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
}

function clean() {
    rm -rf docker-$docker_version.tgz docker
}

function main() {
    docker_download
    docker_install
    docker_compose_install
    clean
    echo "docker安装完成"
}

main "$@"

uninstall.sh

bash
#! /bin/bash

# 判断是否是root用户
if [ "$EUID" -ne 0 ]; then
    echo "请使用root用户执行"
    exit 1
fi

docker_version=29.4.3
docker_install_dir=/usr/local/bin

function docker_uninstall() {
    systemctl disable --now docker
    rm -rf /var/lib/docker
    rm -rf /etc/docker
    rm -rf /etc/systemd/system/docker.service
    rm -rf /etc/systemd/system/docker.service.d
    # 删除二进制文件(用空格分隔)
    for i in containerd containerd-shim-runc-v2 ctr docker docker-init docker-proxy dockerd runc docker-compose; do
        rm -f /usr/local/bin/$i
    done

    systemctl daemon-reload 2>/dev/null

    echo "Docker 卸载完成"
}

function main() {
    docker_uninstall
}

main "$@"

基于 MIT 许可发布