docker和docker-compose离线安装实践

 更新时间:2025年12月01日 15:23:12   作者:lakelh1  
文章介绍了如何在离线环境中安装Docker和Docker Compose,包括下载、解压、移动文件、启动服务和验证步骤

一、docker 离线安装

# uname -r
3.10.0-1160.119.1.el7.x86_64

1. 下载地址

Index of linux/static/stable/x86_64/

选择版本下载或

sudo wget https://download.docker.com/linux/static/stable/x86_64/docker-28.0.4.tgz

2. 解压

sudo tar -zxvf docker-28.0.4.tgz

3. 移动文件

sudo mv docker/* /usr/local/bin/

4. 启动docker

4.1 manage_docker.sh

#!/bin/bash

# 检查传入的参数
if [ $# -ne 1 ]; then
  echo "Usage: $0 {start|stop|status|restart}"
  exit 1
fi

# 定义变量
DOCKER_BIN="/usr/local/bin/dockerd"
DOCKER_PID_FILE="/var/run/docker.pid"
DOCKER_LOG_FILE="/var/log/docker.log"

# 启动 Docker
start_docker() {
  if [ -f "$DOCKER_PID_FILE" ]; then
    if ps -p $(cat $DOCKER_PID_FILE) -o comm= | grep -qw dockerd; then
      echo "Docker is already running (PID: $(cat $DOCKER_PID_FILE))"
      return 0
    else
      echo "Stale PID file found. Cleaning up..."
      rm -f "$DOCKER_PID_FILE"
    fi
  fi

  echo "Starting Docker..."
  nohup $DOCKER_BIN > "$DOCKER_LOG_FILE" 2>&1 &
  sleep 2  # 等待 dockerd 启动完成
  
  if ps -p $! -o comm= | grep -qw dockerd; then
    echo $! > "$DOCKER_PID_FILE"
    echo "Docker started successfully (PID: $!)"
  else
    echo "Failed to start Docker. Check $DOCKER_LOG_FILE for details."
    exit 1
  fi
}

# 停止 Docker
stop_docker() {
  if [ -f "$DOCKER_PID_FILE" ]; then
    if ps -p $(cat $DOCKER_PID_FILE) -o comm= | grep -qw dockerd; then
      echo "Stopping Docker..."
      kill $(cat $DOCKER_PID_FILE)
      rm -f "$DOCKER_PID_FILE"
      echo "Docker stopped successfully."
    else
      echo "Stale PID file found. Cleaning up..."
      rm -f "$DOCKER_PID_FILE"
    fi
  else
    echo "Docker is not running."
  fi
}

# 检查 Docker 状态
status_docker() {
  if [ -f "$DOCKER_PID_FILE" ]; then
    if ps -p $(cat $DOCKER_PID_FILE) -o comm= | grep -qw dockerd; then
      echo "Docker is running (PID: $(cat $DOCKER_PID_FILE))"
    else
      echo "Docker is not running."
    fi
  else
    echo "Docker is not running."
  fi
}

# 重启 Docker
restart_docker() {
  stop_docker
  start_docker
}

# 根据用户输入执行相应的操作
case "$1" in
  start)
    start_docker
    ;;
  stop)
    stop_docker
    ;;
  status)
    status_docker
    ;;
  restart)
    restart_docker
    ;;
  *)
    echo "Invalid option: $1"
    echo "Usage: $0 {start|stop|status|restart}"
    exit 1
    ;;
esac

exit 0

4.2 使用

chmod +x manage_docker.sh # 赋予可执行权限

./manage_docker.sh start   # 启动 Docker
./manage_docker.sh stop    # 停止 Docker
./manage_docker.sh status  # 查看 Docker 状态
./manage_docker.sh restart # 重启 Docker

4.3 验证

# ./manage_docker.sh start
Starting Docker...
Docker started successfully (PID: 2792)
# docker --version 
Docker version 28.0.4, build b8034c0

二、docker-compose 离线安装

地址:

https://github.com/docker/compose/releases

选择版本下载

wget https://github.com/docker/compose/releases/download/v2.35.0/docker-compose-linux-x86_64

1. 移动并赋权

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

2. 验证

# docker-compose --version
Docker Compose version v2.35.0

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker中如何启动已存在容器

    docker中如何启动已存在容器

    这篇文章主要介绍了docker中如何启动已存在容器问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Docker容器动态加载挂载目录的实践

    Docker容器动态加载挂载目录的实践

    本文主要介绍了Docker容器中动态加载挂载目录的实践,通过挂载目录,可以将主机上的文件或目录与容器中的文件或目录进行关联,实现应用程序的灵活性和可扩展性,这种方法可以避免容器重启,减少应用程序的停机时间,并简化应用程序的部署和管理,使应用程序的迁移和扩展更加容易
    2024-10-10
  • docker load镜像后名字和标签异常的解决方案

    docker load镜像后名字和标签异常的解决方案

    使用docker load加载tar镜像时,若打包时仅用ID,NAME和TAG会显示none,应使用镜像名称打包,如docker save -o [name]:[tag],可重命名:docker tag [id] [new name]:[tag]
    2025-09-09
  • docker-compose部署harbor仓库全过程

    docker-compose部署harbor仓库全过程

    用户尝试在CentOS7上通过yum安装bash-completion,但步骤存在错误:安装后无需手动解压或修改执行权限,应直接使用命令查看版本(如`bash-completion --version`),且路径`/usr/local/sbin`与yum安装路径无关
    2025-09-09
  • 批量删除docker过期停止的容器的四种方法

    批量删除docker过期停止的容器的四种方法

    过期的容器也是占用一部分的内存空间,这时候如果对应一个个删除容器id,有些麻烦,有没有方法对应将其批量删除呢,本文给大家介绍了批量删除docker过期停止的容器的四种方法,需要的朋友可以参考下
    2024-02-02
  • Docker镜像端口映射的原理及实现

    Docker镜像端口映射的原理及实现

    在使用Docker时,端口映射是一个重要的概念,本篇博客将向您介绍什么是端口映射,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • docker启动MySQL容器失败原因分析以及排查记录

    docker启动MySQL容器失败原因分析以及排查记录

    在使用Docker启动MySQL容器时,遇到了配置文件路径错误的问题,通过查看容器日志发现,容器读取的配置文件路径与指定的不一致,解决方法是修改启动命令中的配置文件路径,将其指向正确的目录,最终,容器成功启动并进入Up状态
    2025-02-02
  • 解决docker修改mysql配置文件的问题

    解决docker修改mysql配置文件的问题

    今天在用docker启动一个5.7的数据库在建表时候遇到一个问题,但是很快就解决了,下面小编给大家讲解下docker怎么修改mysql内部的配置,感兴趣的朋友跟随小编一起看看吧
    2022-10-10
  • docker启动springboot项目容器闪退的解决

    docker启动springboot项目容器闪退的解决

    本文主要介绍了docker启动springboot项目容器闪退,大部分原因是启动报错,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 详解Docker容器可视化监控中心搭建

    详解Docker容器可视化监控中心搭建

    本篇文章主要介绍了详解Docker容器可视化监控中心搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论