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

参考文章:Install Docker Engine on Ubuntu

文章目录

    • 安装步骤
      • 下载安装包
      • 拷贝到目标主机并执行安装命令
    • 验证
      • 拉取运行容器
      • 测试build dockerfile
      • 测试持久运行容器
      • 测试主机重启后,docker各服务是否正常自启
    • 卸载方法
    • 附:各安装包作用说明(以及插件)
        • 1. `containerd.io_<version>_<arch>.deb`
        • 2. `docker-ce_<version>_<arch>.deb`
        • 3. `docker-ce-cli_<version>_<arch>.deb`
        • 4. `docker-buildx-plugin_<version>_<arch>.deb`
        • 5. `docker-compose-plugin_<version>_<arch>.deb`
    • 附:`docker-ce-rootless-extras_<version>_<arch>.deb`和`docker-scan-plugin_<version>_<arch>.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_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb

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

在这里插入图片描述

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

root@ubuntu:~# docker version
Client:Version:           20.10.21API version:       1.41Go version:        go1.18.1Git commit:        20.10.21-0ubuntu1~20.04.2Built:             Thu Apr 27 05:56:44 2023OS/Arch:           linux/arm64Context:           defaultExperimental:      trueServer:Engine:Version:          20.10.21API version:      1.41 (minimum version 1.12)Go version:       go1.18.1Git commit:       20.10.21-0ubuntu1~20.04.2Built:            Thu Apr 27 05:37:01 2023OS/Arch:          linux/arm64Experimental:     falsecontainerd:Version:          1.6.12-0ubuntu1~20.04.1GitCommit:        runc:Version:          1.1.4-0ubuntu1~20.04.3GitCommit:        docker-init:Version:          0.19.0GitCommit:        
root@ubuntu:~# 
root@ubuntu:~# 

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

apt install docker.iodocker buildx installapt 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 -uUSER=root# Check user: only support root
WHO=$(whoami | grep "${USER}$")
if [ -z "${WHO}" ]; thenechoecho "Please change to \"${USER}\" user mode first!"echoexit 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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

验证

拉取运行容器

# 第一次安装可以不用,但是卸载后再安装,就需要执行一下,否则会报错:“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 <package_name>命令来卸载包,

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

#!/bin/bash# 打印所有,包括注释
# set -v
# 打印执行命令
# set -x
# 命令出错退出
set -e
# 使用未初始化变量退出
set -uUSER=root# Check user: only support root
WHO=$(whoami | grep "${USER}$")
if [ -z "${WHO}" ]; thenechoecho "Please change to \"${USER}\" user mode first!"echoexit 1
fi# 卸载函数
uninstall_package() {package_name=$1dpkg -r $package_nameif [ $? -ne 0 ]; thenecho "卸载 $package_name 失败!"echoexit 1fiecho "卸载 $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_<version>_<arch>.deb

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

2. docker-ce_<version>_<arch>.deb

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

3. docker-ce-cli_<version>_<arch>.deb

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

4. docker-buildx-plugin_<version>_<arch>.deb

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

5. docker-compose-plugin_<version>_<arch>.deb

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

附:docker-ce-rootless-extras_<version>_<arch>.debdocker-scan-plugin_<version>_<arch>.deb 是什么?

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

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

在这里插入图片描述

在这里插入图片描述

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

express编写一个简单的get接口

/01编写get接口.jsconst express require(express) const app express()// 创建路由 const useRouter require(./router/user.js) // 注册路由 app.use(/api,useRouter)app.listen(8080, (req, res) > {console.log(8080监听) }) ./02编写post接口 // 注意&#xff1a;如…

mac cli文件管理器

背景 最近研究了一下在控制台查看文件的插件ranger, 官方的解释是&#xff1a;一个cli下的文件管理器。觉得效果也很酷炫&#xff0c;所以在此展示一下。 安装 brew install ranger配置生成 建议第一次使用的时候使用 ranger --copy-configall将会在~/.config/ranger目录输…

Solr原理剖析

一、简介 Solr是一个高性能、基于Lucene的全文检索服务器。Solr对Lucene进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;并实现了强大的全文检索功能、高亮显示、动态集群&#xff0c;具有高度的可扩展性。同时从Solr 4.0版本开始&#xff0c;支持SolrCl…

STM32 CAN通讯实验程序

目录 STM32 CAN通讯实验 CAN硬件原理图 CAN外设原理图 TJA1050T硬件描述 实验线路图 回环实验 CAN头文件配置 CAN_GPIO_Config初始化 CAN初始化结构体 CAN筛选器结构体 接收中断优先级配置 接收中断函数 main文件 实验现象 补充 STM32 CAN通讯实验 CAN硬件原理图…

【RabbitMQ】之高可用集群搭建

目录 一、RabbitMQ 集群原理 1、默认集群原理2、镜像集群原理3、负载均衡方案 二、RabbitMQ 高可用集群搭建 1、RabbitMQ 集群搭建2、配置镜像队列3、HAProxy 环境搭建4、Keepalived 环境搭建 一、RabbitMQ 集群简介 1、默认集群原理 3-1、RabbitMQ 集群简介 单台 RabbitM…

vue项目中对组件使用v-model绑定值,在vue3中如何更新数据

在el-form 中 el-form-item 绑定组件进行校验 想在表单下面爆红提示 可以对组件使用v-model绑定值 vue2 通过this.$emit(‘input’,value) 更新 v-model值 vue3 通过this.$emit(‘update:modelValue’ ,value) 更新 v-model值

会议OA项目之会议发布(一)

目录 前言&#xff1a; 会议发布的产品原型图&#xff1a; 1.会议发布 1.1实现的特色功能&#xff1a; 1.2思路&#xff1a; 使用的数据库&#xff1a; 我们要实现多功能下拉框的形式选择可以参考原文档&#xff1a;https://hnzzmsf.github.io/example/example_v4.html#down…

Michael.W基于Foundry精读Openzeppelin第14期——SafeMath.sol

Michael.W基于Foundry精读Openzeppelin第14期——SafeMath.sol 0. 版本0.1 SafeMath.sol 1. 目标合约2. 代码精读2.1 tryAdd(uint256 a, uint256 b) && trySub(uint256 a, uint256 b) && tryMul(uint256 a, uint256 b) && tryDiv(uint256 a, uint256 b…

LlaMA2微调实战

LLaMA2-SFT LLaMA2-SFT, Llama-2-7B微调(transformers)/LORA(peft)/推理 Gtihub地址 https://github.com/yongzhuo/Llama2-SFT prompt text_1 f"".join(["[INST] <<SYS>>\n ""You are a helpful, respectful and honest assista…

ubuntu远程控制小车 运行rviz时报错

我买的是wheeltec的小车&#xff0c;测试rgbd相机时想在ubuntu上的rviz中显示小车的姿态和看到的rgb和depth图&#xff0c;但是ubuntu中rostopic list和rviz都找不到小车发布的话题信息&#xff0c;运行rqt_image_view时可以显示图片信息。 最终wheeltec的技术人员lucas帮我找了…

nodejs+vue+elementui汽车销售网站

前端技术&#xff1a;nodejsvueelementui,视图层其实质就是vue页面&#xff0c;通过编写vue页面从而展示在浏览器中&#xff0c;编写完成的vue页面要能够和控制器类进行交互&#xff0c;从而使得用户在点击网页进行操作时能够正常。 可以设置中间件来响应 HTTP 请求。 Express …

Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

Kafka怎么做到避免消息重复消费的&#xff1f; 消费者组是什么&#xff1f; 消费者&#xff1a; 1、订阅Topic&#xff08;主题&#xff09; 2、从订阅的Topic消费&#xff08;pull&#xff09;消息&#xff0c; 3、将消费消息的offset&#xff08;偏移量&#xff09;保存在K…

西安电子科技大学

前言 本篇文章投稿与以下活动 【西安城市开发者社区】探索西安高校&#xff1a;展现历史与创新的魅力 资料参考与百度百科 学校简介 西安电子科技大学&#xff08;Xidian University&#xff09;&#xff0c;简称“西电”&#xff0c;位于陕西省西安市&#xff0c;是中央部…

14.Netty源码之模拟简单的HTTP服务器

highlight: arduino-light 简单的 HTTP 服务器 HTTP 服务器是我们平时最常用的工具之一。同传统 Web 容器 Tomcat、Jetty 一样&#xff0c;Netty 也可以方便地开发一个 HTTP 服务器。我从一个简单的 HTTP 服务器开始&#xff0c;通过程序示例为你展现 Netty 程序如何配置启动&a…

2023年全国程序员薪酬排行天梯榜

文章目录 ⭐️ 2023年全国程序员薪酬排行天梯榜 在过去很长的一段时间内&#xff0c;网上总有一个声音&#xff1a;“大厂裁员”、“程序员内卷严重”、“程序员人员过盛”、“35岁中年危机”、“码农吃的青春饭”、“互联网寒冬” 等等等等。 讲道理&#xff0c;我对这种人为的…

LLM Data Pipelines: 解析大语言模型训练数据集处理的复杂流程

编者按&#xff1a;在训练大语言模型的过程中,构建高质量的训练数据集是非常关键的一步&#xff0c;但关于构建大模型训练所需数据集的通用数据处理流程&#xff08;Data pipelines)的相关资料极为稀少。 本文主要介绍了基于Common Crawl数据集的数据处理流程。首先,文章概述了…

复现YOLOv8改进最新MPDIoU:有效和准确的边界盒回归的损失,打败G/E/CIoU,效果明显!!!

MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression 论文简介MPDIoU核心设计思路论文方法实验部分加入YOLOv5代码论文地址:https://arxiv.org/pdf/2307.07662.pdf 论文简介 边界盒回归(Bounding box regression, BBR)广泛应用于目标检测和实例分割,是目标…

【业务功能篇56】SpringBoot 日志SLF4J Logback

3.5.1 日志框架分类与选择 3.5.1.1 日志框架的分类 日志门面 (日志抽象)日志实现JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java)Jul(Java Util Logging) , Log4j , Log4j2 , Logback 记录型日志框架 Jul (Java Util Logging)&#xff1a;JDK中的日志…

Python实现指定区域桌面变化监控并报警

在这篇博客中&#xff0c;我们将使用Python编程语言和一些常用的库来实现一个简单的区域监控和变化报警系统。我们将使用Tkinter库创建一个图形界面&#xff0c;允许用户选择监控区域&#xff0c;并使用OpenCV库进行图像处理和相似性比较&#xff0c;以检测区域内的变化&#x…

基于IP地址的证书实现https

基于IP地址实现传递数据的&#xff0c;默认的HTTP很容易被不法分子劫持数据&#xff0c;网络防洪是当下的互联网为确保安全&#xff0c;要用HTTPS协议更为妥当。 使用IP地址申请证书的主要条件&#xff0c;必须在申请认证过程&#xff0c;开放IP地址外网可以访问&#xff0c;包…