#!/bin/bash # 定义颜色变量,用于输出提示信息 GREEN="\033[32m" RED="\033[31m" NC="\033[0m" # 重置颜色 # 1. 解压 docker 压缩包 echo -e "${GREEN}开始解压 docker-28.4.0.tgz...${NC}" if tar -xf docker-28.4.0.tgz; then echo -e "${GREEN}压缩包解压成功${NC}" else echo -e "${RED}压缩包解压失败,请检查文件是否存在或权限是否足够${NC}" exit 1 fi # 2. 移动 docker 二进制文件到 /usr/bin echo -e "${GREEN}开始移动 docker 文件到 /usr/bin...${NC}" if mv docker/* /usr/bin/; then echo -e "${GREEN}文件移动成功${NC}" else echo -e "${RED}文件移动失败,请检查 docker 目录是否存在或权限是否足够${NC}" exit 1 fi # 3. 创建 docker.service 服务文件 echo -e "${GREEN}开始创建 docker 服务文件...${NC}" SERVICE_FILE="/usr/lib/systemd/system/docker.service" # 使用 cat 重定向写入内容,避免使用 vi 交互操作 cat > "$SERVICE_FILE" << '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 --selinux-enabled=false --insecure-registry=127.0.0.1 ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1:5000 --insecure-registry=docker.tanuki.vip ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity #TasksMax=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target EOF # 检查服务文件是否创建成功 if [ -f "$SERVICE_FILE" ]; then echo -e "${GREEN}docker.service 服务文件创建成功${NC}" else echo -e "${RED}docker.service 服务文件创建失败${NC}" exit 1 fi # 4. 重新加载 systemd 配置 echo -e "${GREEN}重新加载 systemd 配置...${NC}" if systemctl daemon-reload; then echo -e "${GREEN}systemd 配置重载成功${NC}" else echo -e "${RED}systemd 配置重载失败${NC}" exit 1 fi # 5. 启动 docker 服务 echo -e "${GREEN}启动 docker 服务...${NC}" if systemctl start docker; then echo -e "${GREEN}docker 服务启动成功${NC}" else echo -e "${RED}docker 服务启动失败${NC}" exit 1 fi # 6. 设置 docker 开机自启 echo -e "${GREEN}设置 docker 开机自启...${NC}" if systemctl enable docker; then echo -e "${GREEN}docker 开机自启设置成功${NC}" else echo -e "${RED}docker 开机自启设置失败${NC}" exit 1 fi # 7. 查看 docker 服务状态 echo -e "${GREEN}查看 docker 服务状态...${NC}" systemctl status docker echo -e "\n${GREEN}所有操作执行完成!${NC}"