ubuntu docker离线安装docker(.deb包方式)(成功)(附卸载方法)

ubuntu docker离线安装docker(.deb包方式)(成功)(附卸载方法)

码农世界 2024-05-13 前端 60 次浏览 0个评论

参考文章:Install Docker Engine on Ubuntu

文章目录

    • 安装步骤
      • 下载安装包
      • 拷贝到目标主机并执行安装命令
      • 验证
        • 拉取运行容器
        • 测试build dockerfile
        • 测试持久运行容器
        • 测试主机重启后,docker各服务是否正常自启
        • 卸载方法
        • 附:各安装包作用说明(以及插件)
            • 1. `containerd.io__.deb`
            • 2. `docker-ce__.deb`
            • 3. `docker-ce-cli__.deb`
            • 4. `docker-buildx-plugin__.deb`
            • 5. `docker-compose-plugin__.deb`
            • 附:`docker-ce-rootless-extras__.deb`和`docker-scan-plugin__.deb `是什么?

              https://docs.docker.com/desktop/install/ubuntu/

              https://docs.docker.com/engine/install/ubuntu/#install-from-a-package

              说明:这个安装方式是下载.deb包安装,最终效果几乎与用apt install docker.io完全相同。不仅安装方便,卸载起来也十分方便,不会破环系统环境。

              安装步骤

              下载安装包

              https://download.docker.com/linux/ubuntu/dists/

              我是ubuntu20.04,选择focal:

              选择pool(官网让选这的):

              解释:

              目录说明:

              • edge/:包含一些实验性或开发中的软件包,可能不稳定或不适合生产环境使用。
              • nightly/:包含每日构建的软件包,用于测试和开发目的。
              • pool/:存放软件包的目录。
              • stable/:包含稳定版本的软件包,适合生产环境使用。
              • test/:包含一些测试相关的软件包。

                文件说明:

                • InRelease:包含软件包的元数据和数字签名,用于验证软件包的完整性和真实性。
                • Release:包含软件包的元数据,如软件包列表、版本信息等。
                • Release.gpg:包含对Release文件的数字签名,用于验证Release文件的真实性。

                  选择stable:

                  选择amd64(根据系统来,我的目前是amd64):

                  将下列文件全下载下来:

                  containerd.io__.deb
                  docker-ce__.deb
                  docker-ce-cli__.deb
                  docker-buildx-plugin__.deb
                  docker-compose-plugin__.deb
                  

                  关于下载什么版本的,我就根据我ubuntu20.04虚拟机上之前用apt install docker.io的来吧:

                  这是我们ubuntu20.04arm盒子的,我也备份下:

                  root@ubuntu:~# docker version
                  Client:
                   Version:           20.10.21
                   API version:       1.41
                   Go version:        go1.18.1
                   Git commit:        20.10.21-0ubuntu1~20.04.2
                   Built:             Thu Apr 27 05:56:44 2023
                   OS/Arch:           linux/arm64
                   Context:           default
                   Experimental:      true
                  Server:
                   Engine:
                    Version:          20.10.21
                    API version:      1.41 (minimum version 1.12)
                    Go version:       go1.18.1
                    Git commit:       20.10.21-0ubuntu1~20.04.2
                    Built:            Thu Apr 27 05:37:01 2023
                    OS/Arch:          linux/arm64
                    Experimental:     false
                   containerd:
                    Version:          1.6.12-0ubuntu1~20.04.1
                    GitCommit:        
                   runc:
                    Version:          1.1.4-0ubuntu1~20.04.3
                    GitCommit:        
                   docker-init:
                    Version:          0.19.0
                    GitCommit:        
                  root@ubuntu:~# 
                  root@ubuntu:~# 
                  

                  不过我的虚拟机貌似没装buildx插件和compose,我用命令装下:

                  apt install docker.io
                  docker buildx install
                  apt install docker-compose
                  

                  算了,还是不装了,不装好像也没事,docker基本功能能用就行。(我后来试了,上面命令好像有问题,buildx还装不了。。。)

                  那我们就只装下面这几个,保证基本功能能用就行:

                  containerd.io_1.6.12-1_amd64.deb
                  docker-ce-cli_20.10.21~3-0~ubuntu-focal_amd64.deb
                  docker-ce_20.10.21~3-0~ubuntu-focal_amd64.deb
                  

                  这也奇怪,列表中文件名有~符号,下下来文件又没了。。。。

                  拷贝到目标主机并执行安装命令

                  把下好的文件拷贝到目标虚拟机中:

                  然后根据官网提供的方法安装各安装包:

                  我这为了方便和可维护,直接做了个脚本:

                  #!/bin/bash
                  # 打印所有,包括注释
                  # set -v
                  # 打印执行命令
                  # set -x
                  # 命令出错退出
                  set -e
                  # 使用未初始化变量退出
                  set -u
                  USER=root
                  # Check user: only support root
                  WHO=$(whoami | grep "${USER}$")
                  if [ -z "${WHO}" ]; then
                      echo
                      echo "Please change to \"${USER}\" user mode first!"
                      echo
                      exit 1
                  fi
                  # 获取脚本所在目录
                  SCRIPT_DIR=$(
                      cd "$(dirname "$0")" || {
                          echo "cd Failure"
                          exit 1
                      }
                      pwd
                  )
                  DEB_PATH_DOCKER_CONTAINERD_IO=$SCRIPT_DIR/containerd.io_1.6.12-1_amd64.deb
                  DEB_PATH_DOCKER_CE=$SCRIPT_DIR/docker-ce-cli_20.10.21_3-0_ubuntu-focal_amd64.deb
                  DEB_PATH_DOCKER_CE_CLI=$SCRIPT_DIR/docker-ce_20.10.21_3-0_ubuntu-focal_amd64.deb
                  # DEB_PATH_DOCKER_BUILDX=$SCRIPT_DIR/docker-buildx-plugin_0.11.1-1_ubuntu.20.04_focal_amd64.deb
                  # DEB_PATH_DOCKER_COMPOSE=$SCRIPT_DIR/docker-buildx-plugin_0.11.1-1_ubuntu.20.04_focal_amd64.deb
                  # 安装.deb包(注意是有顺序的,顺序错了安装不起来)
                  # (网友提醒,这个顺序不对,我未做验证)
                  # dpkg -i $DEB_PATH_DOCKER_CONTAINERD_IO \
                  #     $DEB_PATH_DOCKER_CE \
                  #     $DEB_PATH_DOCKER_CE_CLI
                  dpkg -i $DEB_PATH_DOCKER_CE_CLI \
                      $DEB_PATH_DOCKER_CONTAINERD_IO \
                      $DEB_PATH_DOCKER_CE 
                  

                  把脚本搞到目录下,并且运行:

                  验证

                  拉取运行容器

                  # 第一次安装可以不用,但是卸载后再安装,就需要执行一下,否则会报错:“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”
                  sudo service docker start
                  
                  sudo docker run hello-world
                  

                  成功了!

                  测试build dockerfile

                  测试build dockerfile也没有问题,那那个buildx应该是build跨平台镜像用的:

                  测试持久运行容器

                  测试主机重启后,docker各服务是否正常自启

                  重启后:

                  看起来应该是没有什么问题,跟用apt install docker.io效果一样

                  卸载方法

                  可以用dpkg -r 命令来卸载包,

                  我写了个卸载脚本,执行脚本可以一键卸载docker(卸载上面安装的那三个.deb包):

                  #!/bin/bash
                  # 打印所有,包括注释
                  # set -v
                  # 打印执行命令
                  # set -x
                  # 命令出错退出
                  set -e
                  # 使用未初始化变量退出
                  set -u
                  USER=root
                  # Check user: only support root
                  WHO=$(whoami | grep "${USER}$")
                  if [ -z "${WHO}" ]; then
                      echo
                      echo "Please change to \"${USER}\" user mode first!"
                      echo
                      exit 1
                  fi
                  # 卸载函数
                  uninstall_package() {
                      package_name=$1
                      dpkg -r $package_name
                      if [ $? -ne 0 ]; then
                          echo "卸载 $package_name 失败!"
                          echo
                          exit 1
                      fi
                      echo "卸载 $package_name 成功"
                      echo
                  }
                  # 注意卸载顺序:docker-ce 依赖 docker-ce-cli,不能先卸载 docker-ce-cli
                  # 卸载docker-ce
                  uninstall_package "docker-ce"
                  # 卸载docker-ce-cli
                  uninstall_package "docker-ce-cli"
                  # 卸载containerd.io
                  uninstall_package "containerd.io"
                  

                  执行结果:

                  附:各安装包作用说明(以及插件)

                  下面是Docker相关软件包的安装文件,各自的作用如下:

                  1. containerd.io__.deb

                  这是Docker容器运行时(containerd)的软件包。Containerd是一个开源的容器运行时,用于管理和运行容器。

                  2. docker-ce__.deb

                  这是Docker社区版(Community Edition)的软件包。Docker CE是免费的Docker版本,适用于个人和小型团队使用。

                  3. docker-ce-cli__.deb

                  这是Docker社区版的命令行界面(CLI)的软件包。它提供了与Docker守护进程进行交互的命令行工具。

                  4. docker-buildx-plugin__.deb

                  这是Docker Buildx插件的软件包。Buildx是一个用于构建多平台镜像的工具,它可以同时构建多个平台的镜像,并支持交叉编译。

                  5. docker-compose-plugin__.deb

                  这是Docker Compose插件的软件包。Docker Compose是一个用于定义和运行多容器应用的工具,它使用一个YAML文件来配置应用的服务、网络和卷等。

                  附:docker-ce-rootless-extras__.deb和docker-scan-plugin__.deb 是什么?

                  https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/

                  下载文件列表里有这两个,不知道是啥?

                  docker-ce-rootless-extras__.deb 是Docker社区版(Community Edition)的非root用户额外组件的软件包。它包含了一些用于在非root用户下运行Docker的额外工具和插件。这些组件允许非特权用户在没有root权限的情况下使用Docker。

                  docker-scan-plugin__.deb 是Docker的扫描插件的软件包。这个插件允许用户对Docker镜像进行安全扫描,以检测其中的漏洞和安全问题。它可以帮助用户在构建和部署容器时提前发现潜在的安全风险。

                  这两个软件包是Docker的附加组件,可以根据需要选择安装。docker-ce-rootless-extras适用于非root用户使用Docker的场景,而docker-scan-plugin适用于进行Docker镜像的安全扫描。

转载请注明来自码农世界,本文标题:《ubuntu docker离线安装docker(.deb包方式)(成功)(附卸载方法)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,60人围观)参与讨论

还没有评论,来说两句吧...

Top