Linux系统中快速安装docker
1 查看是否安装docker
要检查Ubuntu是否安装了Docker,可以使用以下几种方法:
方法1:使用 docker --version 命令
docker --version
如果Docker已安装,输出会显示Docker的版本信息,例如:
Docker version 20.10.10, build b485636
如果Docker未安装,你将看到类似以下的错误信息:
Command 'docker' not found, but can be installed with:
sudo apt install docker.io
方法2:使用 which docker 命令
which docker
如果Docker已安装,此命令会显示Docker可执行文件的路径,例如:
/usr/bin/docker
如果Docker未安装,命令不会产生输出。
方法3:检查Docker服务状态
systemctl status docker
如果Docker已安装且正在运行,你将看到服务的详细状态信息。如果Docker未安装或未运行,输出将类似于:
Unit docker.service could not be found.
方法4:检查已安装的包
你还可以检查系统中是否安装了Docker包。
检查 docker 包
dpkg -l | grep docker
或
检查 docker.io 包
dpkg -l | grep docker.io
如果Docker已安装,你会看到与Docker相关的包信息,例如:
ii docker-ce 5:20.10.10~3-0~ubuntu-focal amd64 Docker: the open-source application container engine
ii docker-ce-cli 5:20.10.10~3-0~ubuntu-focal amd64 Docker CLI: the open-source application container engine
安装Docker
如果你的系统中没有安装Docker,可以使用以下步骤安装Docker。
查询版本号
snap info docker

完整步骤如下:
使用 apt 包管理器可以直接安装指定版本的 docker.io 包。虽然这种方法更简单,但 docker.io 包可能不是官方的最新版本。以下是如何使用 apt 安装特定版本的 docker.io:
1. 更新包信息
sudo apt update
2. 查找可用的 Docker 版本
使用 apt-cache 查看可用的 docker.io 版本:
apt-cache madison docker.io
这将列出所有可用的 docker.io 版本。例如:
docker.io | 20.10.17-0ubuntu1~20.04.1 | http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packagesdocker.io | 20.10.12-0ubuntu2~20.04.1 | http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages...

3. 安装特定版本的 Docker
找到所需版本后,使用以下命令安装,例如20.10.17:
sudo apt install docker.io=20.10.21-0ubuntu1~18.04.3
4. 防止自动升级
为了防止 docker.io 包在系统升级时自动升级到新版本,可以将其保持在当前版本:
sudo apt-mark hold docker.io
5. 启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
- 启动服务:
start命令会立即启动服务,但不会配置其在系统重启后自动启动。 - 启用服务:
enable命令会配置服务在系统启动时自动启动,但不会立即启动服务。
6. 验证安装
docker --version
docker官方网站寄了,换国内镜像网站,跟pip,conda一样
vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://ustc-edu.cn.mirror.aliyuncs.com/”,“https://ccr.ccs.tencentyun.com/”,“https://docker.m.daocloud.io/”]
}
systemctl daemon-reload
systemctl restart docker
容器重启策略
当Ubuntu虚拟机关机或重启后,原先运行在Docker中的容器会停止。如果你重新启动虚拟机并运行 docker ps 命令,你将看不到那些原先运行的容器,因为它们已经停止。
但是,这些容器并没有被删除,你可以通过 docker ps -a 命令查看所有(包括停止的)容器。
重新启动容器
如果你希望在系统重启后自动重新启动容器,可以为容器设置重启策略。Docker 提供了几种重启策略,你可以在运行容器时通过 --restart 选项来设置:
- no:默认值。容器退出时不会自动重启。
- on-failure:如果容器由于错误退出(非零退出状态),则自动重启。
- always:无论退出状态如何,始终自动重启。
- unless-stopped:始终自动重启,除非容器是手动停止的。
示例
使用 --restart 选项设置容器的重启策略:
docker run \-e RABBITMQ_DEFAULT_USER=itheima \-e RABBITMQ_DEFAULT_PASS=123321 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hmall \--restart always \-d \rabbitmq:3.8-management
在上面的命令中,--restart always 参数确保容器在Docker守护进程启动时(例如系统重启后)自动重启。
启动和停止 Docker 容器
当系统重启后,使用以下命令来手动启动和停止容器:
-
查看所有容器,包括已停止的:
docker ps -a -
启动一个已停止的容器:
docker start <container_name_or_id> -
停止一个运行中的容器:
docker stop <container_name_or_id>
进一步说明
使用重启策略可以确保容器在系统重启后自动恢复运行,提供了一种简单的方法来管理容器的高可用性,特别是对于需要持续运行的服务。
的容器**:
docker start <container_name_or_id>
-
停止一个运行中的容器:
docker stop <container_name_or_id>
进一步说明
使用重启策略可以确保容器在系统重启后自动恢复运行,提供了一种简单的方法来管理容器的高可用性,特别是对于需要持续运行的服务。
相关文章:
Linux系统中快速安装docker
1 查看是否安装docker 要检查Ubuntu是否安装了Docker,可以使用以下几种方法: 方法1:使用 docker --version 命令 docker --version如果Docker已安装,输出会显示Docker的版本信息,例如: Docker version …...
每日c/c++题 备战蓝桥杯(最长上升子序列)
点击题目链接 题目描述 给出一个由 n(n≤5000) 个不超过 1e6 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。 最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增大的。 输入格式 第一行,一个整数…...
蓝桥杯—质数
质数 质数是一个只有1和它本身2个因数 代码实现 //求质数 #include<bits/stdc.h> using namespace std; bool zhishu(int n) {if(n1){cout<<"1不是质数";return false;}else if(n>1){for(int i2;i<sqrt(n);i){if(n%i0){cout<<n<<&q…...
CP15 协处理器
ARMv7-A 一共支持 16 个协处理器,编号从 CP0~CP15。这里仅对CP15进行描述。 1、ARMv7-A 协处理器 ARMv7-A 处理器除了标准的 R0~R15,CPSR,SPSR 以外,由于引入了 MMU、TLB、Cache 等内容,ARMv7-A 使用协处理器来对这些…...
网络运维学习笔记(DeepSeek优化版)026 OSPF vlink(Virtual Link,虚链路)配置详解
文章目录 OSPF vlink(Virtual Link,虚链路)配置详解1. 虚链路核心特性2. 基础配置命令3. 状态验证命令3.1 查看虚链路状态3.2 验证LSDB更新 4. 关键技术要点4.1 路径选择机制4.2 虚链路的链路优化 5. 环路风险案例 OSPF vlink(Virtual Link&a…...
简单介绍一下Unity中的material和sharedMaterial
在Unity中,材质(Material)是定义物体外观的关键组件,它决定了物体的颜色、纹理、光照效果等属性。Renderer组件(如MeshRenderer或SpriteRenderer)通过材质来渲染游戏对象的外观。Unity提供了两种访问材质的…...
小智机器人关键函数解析,Application::MainLoop() 用于持续监听事件组中的事件,并根据不同的事件触发相应的操作
以下是对 Application::MainLoop() 函数的详细解释: 源码: // The Main Loop controls the chat state and websocket connection // If other tasks need to access the websocket or chat state, // they should use Schedule to call this function …...
设计模式之适配器模式(二):STL适配器
目录 1.背景 2.什么是 STL 适配器? 3.函数对象适配器 3.1.std::bind 3.2.std::not1 和 std::not2 3.3.std::mem_fn 4.容器适配器 4.1.std::stack(栈) 4.2.std::queue(队列) 4.3.std::priority_queue(优先队列࿰…...
【区块链安全 | 第十六篇】类型之值类型(三)
文章目录 函数类型声明语法转换成员合约更新时的值稳定性示例 函数类型 函数类型是函数的类型。函数类型的变量可以通过函数进行赋值,函数类型的参数可以用来传递函数并返回函数。 函数类型有两种类型:内部函数和外部函数。 内部函数只能在当前合约内调…...
设计模式——设计模式理念
文章目录 参考:[设计模式——设计模式理念](https://mp.weixin.qq.com/s/IEduZFF6SaeAthWFFV6zKQ)参考:[设计模式——工厂方法模式](https://mp.weixin.qq.com/s/7tKIPtjvDxDJm4uFnqGsgQ)参考:[设计模式——抽象工厂模式](https://mp.weixin.…...
Kubernetes对象基础操作
基础操作 文章目录 基础操作一、创建Kubernetes对象1.使用指令式命令创建Deployment2.使用指令式对象配置创建Deployment3.使用声明式对象配置创建Deployment 二、操作对象的标签1.为对象添加标签2.修改对象的标签3.删除对象标签4.操作具有指定标签的对象 三、操作名称空间四、…...
Java与代码审计-Java基础语法
Java基础语法 package com.woniuxy.basic;public class HelloWorld {//入口函数public static void main(String[] args){System.out.println("Hello World");for(int i0;i< args.length;i){System.out.println(args[i]);}} }运行结果如下: 但是下面那个没有参数…...
Xenium | 细胞邻域(Cellular Neighborhood)分析(fixed radius)
上节我们介绍了空间转录组数据分析中常见的细胞邻域分析,CN计算过程中定义是否为细胞邻居的方法有两种,一种是上节我们使用固定K最近邻方法(fixed k-nearest neighbors)定义细胞Neighborhood,今天我们介绍另外一种固定半径范围内(fixed radiu…...
Python:爬虫概念与分类
网络请求: https://www.baidu.com url——统一资源定位符 请求过程: 客户端,指web浏览器向服务器发送请求 请求:请求网址(request url);请求方法(request methods);请求头(request header)&…...
[Linux实战] Linux设备树原理与应用详解
Linux设备树原理与应用详解 一、设备树概述 1.1 什么是设备树 设备树(Device Tree,简称DT)是一种描述硬件资源的数据结构,它通过一种树状结构来描述系统硬件配置,包括CPU、内存、总线、外设等硬件信息。设备树最初在…...
用Nginx实现负载均衡与高可用架构(整合Keepalived)
前言 在分布式架构中,负载均衡和高可用是保障系统稳定性的两大核心能力。本文将深入讲解如何通过Nginx实现七层负载均衡,并结合Keepalived构建无单点故障的高可用架构。文末附完整配置模板! 一、Nginx负载均衡实现方案 1. 核心原理 Nginx通…...
SQLMesh调度系统深度解析:内置调度与Airflow集成实践
本文系统解析SQLMesh的两种核心调度方案:内置调度器与Apache Airflow集成。通过对比两者的适用场景、架构设计和操作流程,为企业构建可靠的数据分析流水线提供技术参考。重点内容包括: 内置调度器的轻量级部署与性能优化策略Airflow集成的端到…...
Excel 中 INDEX 和 VLOOKUP 的对比
INDEX 和 VLOOKUP 都是 Excel 中常用的查找函数,但它们的用途和灵活性有所不同。 1. 相同点 均可用于查找数据:都能根据某个条件返回目标值。 支持精确匹配:均可使用 0 或 FALSE 进行精确匹配。 2. 不同点 特性VLOOKUPINDEX MATCH查找方向…...
Multism TL494仿真异常
仿真模型如下:开关频率少了一半,而且带不动负载,有兄弟知道为什么吗 这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码…...
基于 Trae 的超轻量级前端架构设计与性能优化实践
一、技术背景与选型动因 在单页应用(SPA)复杂度指数级增长的今天,传统框架在千级列表渲染场景下普遍存在首屏延迟(>1.5s)、内存占用过高(>200MB)等问题。基于对 Webpack Bundle Analyzer 的长期观察,我们发现核心问题集中在: • 类组件…...
算法练习(队列)
队列 单向队列 1. 定义一个队列 Queue<Integer> q new LinkedList<>(); Queue<Character> q new LinkedList<>();2. 入队列 q.offer(1); q.offer(2); // 从队尾入队列 q.add();3. 出队列 q.poll() // 从队头出队列,并将删除的元素…...
HarmonyOS NEXT开发进阶(十五):日志打印 hilog 与 console.log 的区别
文章目录 一、前言二、两者区别对比三、HiLog 详解四、拓展阅读 一、前言 在日常开发阶段,日志打印是调试程序非常常用的操作,在鸿蒙的官方文档中介绍了hilog这种方式,前端转过来的开发者发现console.log也可以进行日志打印,而且…...
【差分隐私相关概念】差分隐私中的稀疏向量技术
差分隐私中的稀疏向量技术(Sparse Vector Technique, SVT) 稀疏向量技术(SVT)是差分隐私中的一种高效机制,专用于处理稀疏高影响查询的场景。其核心思想是:当面对大量查询时,仅对其中“显著超过…...
快速幂算法还有用吗?——从内置函数到高性能计算的深度解析
博主在学习过程中遇到了一个疑问,既然C语言中有内置函数pow,那为什么还需要算法思想中的快速幂算法呢?下面将会讲解快速幂算法在特定场景下依然非常有用,具体原因如下: 目录 1. 精度与整数运算 2. 性能对比 3. 应用场…...
开源测试用例管理平台
不可错过的10个开源测试用例管理平台: PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案,使团队能够在不受限的情况下适应具体的测…...
vue 权限应用
目录 一、系统菜单栏权限 二、系统页面按钮权限 在企业开发中,不同的用户所扮演的角色不一样,角色拥有权限,所以用户拥有角色,就会有角色对应的权限。例如,张三是系统管理员角色,登录后就拥有整个系统的…...
鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程
数据迁移是什么 什么是数据迁移,对用户来讲就是本地数据的迁移,终端设备从HarmonyOS 3.1 Release API 9及之前版本(单框架)迁移到HarmonyOS NEXT(双框架)后保证本地数据不丢失。例如,我在某APP…...
利用 PCI-Express 交换机实现面向未来的推理服务器
在数据中心系统的历史上,没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴,因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…...
Python调用手机摄像头检测火焰烟雾的三种方法
方法1:使用IP摄像头应用 OpenCV 1. 在手机上安装IP摄像头应用(如IP Webcam for Android) 2. 配置应用并启动服务器 3. 在Python中使用OpenCV连接 import cv2 import numpy as np # 手机IP摄像头URL(替换为你的手机IP和端口…...
Python if else while for 学习笔记
一.if,else if语句用于根据条件执行代码块 else语句可与if语句结合,当if判断为假时执行else语句 x10 if x>5:print("x大于5") y3 if y>5:print("y大于5") else:print("y小于等于5")结果: 二.while循环…...
