Docker离线安装

发布于:2024-07-02 ⋅ 阅读:(17) ⋅ 点赞:(0)

在这里插入图片描述

离线安装必要性

Docker 离线安装的必要性主要体现在以下几个方面:

  1. 安全合规性:某些组织或企业的服务器出于安全政策的考虑,不允许连接到互联网。在这种情况下,为了遵守安全规定,需要采用离线安装的方式来部署 Docker。

  2. 网络限制:在一些特定的网络环境中,服务器可能因为网络隔离或限制而无法访问外部网络资源,这就需要通过离线方式来安装所需的软件。

  3. 稳定性和版本控制:在生产环境中,为了确保系统的稳定性,可能需要使用特定版本的 Docker,而这个版本可能不是最新版本。通过离线安装,可以确保安装的 Docker 版本是经过测试和验证的。

  4. 避免潜在风险:在线安装过程中可能会受到网络攻击或恶意软件的威胁,而离线安装可以在一个受控的环境中进行,降低这些风险。

总之,Docker 离线安装提供了一种灵活、安全、可控的部署方式,尤其适用于那些对网络安全性、稳定性和合规性有特殊要求的场景。

分步安装法

  1. 下载 Docker 离线安装包

    • 在一台可以访问互联网的电脑上,从清华镜像源下载 Docker 的 tar.gz 格式的安装包。
     wget  https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/docker-24.0.6.tgz
    
  2. 上传到服务器

    • 使用文件传输工具(如 WinSCP)将下载的 Docker 安装包上传到目标服务器的/opt/software/ 目录下。
  3. 解压安装包

    tar -zxvf docker-24.0.6.tgz
    
  4. 复制文件

    sudo cp ./docker/* /usr/bin
    
  5. 创建 Docker 服务文件

    sudo cd /etc/systemd/system/
    sudo touch docker.service
    
  6. 编辑 Docker 服务文件

    • 打开 docker.service 文件,例如使用 sudo vim docker.service
    • 将以下内容复制到 docker.service 文件中。
      [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
      ExecReload=/bin/kill -s HUP $MAINPID
      LimitNOFILE=infinity
      LimitNPROC=infinity
      LimitCORE=infinity
      TimeoutStartSec=0
      Delegate=yes
      KillMode=process
      Restart=on-failure
      StartLimitBurst=3
      StartLimitInterval=60s
      
      [Install]
      WantedBy=multi-user.target
      
  7. 添加执行权限

    sudo chmod +x docker.service
    
  8. 加载并启动 Docker 服务

    sudo systemctl daemon-reload
    sudo systemctl start docker
    
  9. 设置开机自启动

    sudo systemctl enable docker.service
    
  10. 验证 Docker 安装

    sudo systemctl status docker
    docker --version
    

一键安装法

  1. 创建软件安装目录

    sudo mkdir -p /opt/software/docker
    
  2. 上传安装软件

    • 将安装软件上传到/opt/software/docker 目录。
  3. 创建 Docker 服务文件

    • /opt/software/docker目录下创建docker.service 文件, 内容参考分步安装第6步
  4. 编写一键安装脚本

    • 在 Docker 安装包所在目录下创建 install.sh 脚本文件,并填入以下内容:
      #!/bin/sh
      echo '解压tar包'
      tar -xvf $1
      
      echo '将docker目录下所有文件复制到/usr/bin目录'
      cp docker/* /usr/bin
      rm -rf docker/*
      
      echo '将docker.service 复制到/etc/systemd/system/目录'
      cp docker.service /etc/systemd/system/
      
      echo '添加文件可执行权限'
      chmod +x /etc/systemd/system/docker.service
      
      echo '重新加载配置文件'
      systemctl daemon-reload
      
      echo '启动docker'
      systemctl start docker
      
      echo '设置开机自启'
      systemctl enable docker.service
      
      echo 'docker安装成功'
      docker --version
      
  5. 编写一键卸载脚本

    • 在 Docker 安装包所在目录下/opt/software/docker创建 uninstall.sh 脚本文件,并填入以下内容:
      #!/bin/bash
      
      # 卸载 Docker 脚本
      
      # 步骤一:停止 Docker 服务
      echo "停止 Docker 服务..."
      sudo systemctl stop docker
      
      # 步骤二:删除 Docker 服务
      echo "移除 Docker 开机自启动..."
      sudo systemctl disable docker.service
      
      echo "删除 Docker 服务文件..."
      sudo rm -f /etc/systemd/system/docker.service
      
      # 步骤三:删除 Docker 相关命令和文件
      echo "删除 Docker 相关命令..."
      sudo rm -f /usr/bin/docker*
      sudo rm -f /usr/bin/containerd*
      sudo rm -f /usr/bin/ctr
      sudo rm -f /usr/bin/runc
      
      echo "删除 Docker 目录和容器相关文件..."
      sudo rm -rf /var/lib/docker
      sudo rm -rf /var/lib/containerd
      
      # 步骤四:验证是否已成功卸载 Docker
      echo "验证 Docker 是否已成功卸载..."
      if ! docker --version &> /dev/null; then
          echo "Docker 卸载成功。"
      else
          echo "Docker 卸载失败,请检查。"
      fi
      
  6. 赋予脚本执行权限

    chmod +x install.sh
    chmod +x uninstall.sh
    
  7. 执行安装脚本

    ./install.sh docker-24.0.6.tgz
    
  8. 验证 Docker 安装

    sudo systemctl status docker
    docker --version
    
  9. 卸载Docker安装

    ./uninstall.sh
    

离线镜像加载

以 Docker 中的 MySQL 5.7 镜像为例,演示镜像离线加载的步骤, 包括从拉取(pull)到保存(save)再到加载(load)的步骤:

  1. 拉取 MySQL 5.7 镜像
    在有网络连接的机器上,首先使用 docker pull 命令来下载 MySQL 5.7 镜像。

    docker pull mysql:5.7
    
  2. 保存 MySQL 5.7 镜像为 tar 文件

    下载完成后,使用 docker save 命令将 MySQL 5.7 镜像打包为 tar 文件。

    docker save -o mysql-5.7.tar mysql:5.7
    
  3. 传输 tar 文件
    将生成的 mysql-5.7.tar 文件传输到目标机器。你可以使用 scp、USB 驱动器或其他文件传输方法。下面以scp为例:

    scp mysql-5.7.tar  username@host:/opt/software/docker
    
    • username@host 替换成你的服务器的用户名和IP地址。
  4. 在目标机器上加载 tar 文件为镜像
    在目标机器上,使用 docker load 命令来从 tar 文件中加载 MySQL 5.7 镜像。

    docker load -i mysql-5.7.tar
    
  5. 验证镜像是否加载成功
    使用 docker images 命令来检查 MySQL 5.7 镜像是否已经成功加载到本地镜像库中。

    docker images
    

    你应该能够在列出的镜像中看到 mysql:5.7

  6. 运行 MySQL 5.7 容器

    如果你想要在 Docker 中运行 MySQL 5.7,可以使用以下命令:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    

    这里,mysql 是你给容器指定的名称,123456 是你设置的 MySQL root 用户的密码,-d 表示以 detached 模式运行容器。

注意事项

  • 确保在执行这些步骤之前,你有足够的权限(可能需要 sudo)来执行这些命令,并且服务器的防火墙设置允许 Docker 服务的正常运行。

参考文章

Docker】Docker学习之一:离线安装Docker步骤
Docker安装包下载