Docker与虚拟机的区别及常用指令详解

在现代软件开发中,容器化和虚拟化技术已经成为不可或缺的工具。Docker和虚拟机(VM)是两种常见的技术, 它们都可以帮助开发者在不同的环境中运行应用程序。然而,它们的工作原理和使用场景有很大的不同。本文将详细探讨Docker与虚拟机的区别,并介绍Docker的常用指令。

在这里插入图片描述

文章目录

  • 一、Docker与虚拟机的区别
    • 1.1 架构
    • 1.2 资源占用
    • 1.3 隔离性
    • 1.4 使用场景
  • 二、 Docker常用指令
    • 2.1 镜像相关指令
    • 2.2 容器相关指令
    • 2.3 网络相关指令
    • 2.4 数据卷相关指令
    • 2.5 Docker Compose相关指令
  • 三、总结

一、Docker与虚拟机的区别

1.1 架构

虚拟机(VM)

  • 虚拟机通过在物理硬件上运行一个称为虚拟机监控程序(Hypervisor) 的软件层来创建虚拟的硬件环境。
  • 每个虚拟机都包含一个完整的操作系统(Guest OS),应用程序运行在这个操作系统之上。
  • 虚拟机提供了完全的隔离性,但同时也带来了较大的资源开销。

Docker

  • Docker使用容器化技术,容器直接运行在宿主机的操作系统上,共享宿主机的内核。
  • 每个容器只包含应用程序及其依赖,而不需要完整的操作系统。
  • 容器比虚拟机更轻量级,启动速度更快,资源占用更少。

1.2 资源占用

虚拟机

  • 由于每个虚拟机都需要运行一个完整的操作系统,因此会占用较多的内存、CPU和存储资源。
  • 启动虚拟机通常需要较长时间。

Docker

  • 容器共享宿主机的内核,因此资源占用较少。
  • 容器可以在几秒钟内启动,非常适合快速部署和扩展。

1.3 隔离性

虚拟机

  • 虚拟机提供了完全的隔离性,每个虚拟机都有独立的操作系统和内核。
  • 虚拟机之间的相互影响较小,安全性较高。

Docker

  • 容器共享宿主机的内核,因此隔离性不如虚拟机。
  • 虽然Docker提供了一些隔离机制(如命名空间和控制组),但在安全性方面仍不如虚拟机。

1.4 使用场景

虚拟机

  • 适用于需要完全隔离的环境,如运行不同操作系统的应用程序。
  • 适合需要高安全性的场景,如金融、医疗等领域。

Docker

  • 适用于需要快速部署和扩展的场景,如微服务架构。
  • 适合开发、测试和持续集成/持续部署(CI/CD)流程。

二、 Docker常用指令

2.1 镜像相关指令

拉取镜像

docker pull <镜像名>:<标签>

例如:

docker pull ubuntu:latest

列出本地镜像

docker images

删除本地镜像

docker rmi <镜像ID或镜像名>

2.2 容器相关指令

运行容器

docker run [选项] <镜像名> [命令]

例如:

docker run -it ubuntu /bin/bash

列出运行中的容器

docker ps

列出所有容器(包括停止的)

docker ps -a

启动已停止的容器

docker start <容器ID或容器名>

停止运行中的容器

docker stop <容器ID或容器名>

删除容器

docker rm <容器ID或容器名>

进入运行中的容器

docker exec -it <容器ID或容器名> /bin/bash

2.3 网络相关指令

列出Docker网络

docker network ls

创建自定义网络

docker network create <网络名>

将容器连接到网络

docker network connect <网络名> <容器ID或容器名>

2.4 数据卷相关指令

创建数据卷

docker volume create <卷名>

列出数据卷

docker volume ls

删除数据卷

docker volume rm <卷名>

挂载数据卷到容器

docker run -v <卷名>:<容器内路径> <镜像名>

2.5 Docker Compose相关指令

启动服务

docker-compose up

停止并删除服务

docker-compose down

查看服务日志

docker-compose logs

三、总结

Docker和虚拟机各有优缺点,选择哪种技术取决于具体的应用场景和需求。 Docker以其轻量级和快速部署的特性,在现代开发中得到了广泛应用。通过掌握Docker的常用指令,开发者可以更高效地管理和部署应用程序。希望本文能帮助你更好地理解Docker与虚拟机的区别,并在实际工作中灵活运用Docker技术。

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

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

相关文章

【JVM-2.3】深入解析JVisualVM:Java性能监控与调优利器

在Java应用的开发和运维过程中&#xff0c;性能监控与调优是不可或缺的环节。无论是排查内存泄漏、分析CPU瓶颈&#xff0c;还是优化线程使用&#xff0c;开发者都需要借助一些强大的工具来辅助诊断。JVisualVM 正是这样一款由Oracle提供的免费工具&#xff0c;它集成了多种性能…

简聊MySQL并发事务中幻读、虚读问题的解决方案

在MySQL数据库中&#xff0c;事务的幻读和虚读问题是并发控制中的关键挑战。以下是针对这两个问题的解决方案及原理说明&#xff0c;并附上相关示例。 一、幻读问题及其解决方案 幻读问题的定义 幻读是指一个事务在前后两次查询同一个范围的时候&#xff0c;后一次查询看到了…

WINFORM - DevExpress -> gridcontrol ---->控件(ColumnEdit控件)

ImageComboBoxEdit--带图片的下拉菜单 DevExpress&#xff1a;带图片的下拉菜单ImageComboBoxEdit_weixin_34313182的博客-CSDN博客 ImageEdit--图片按钮 DevExpress控件中的gridcontrol表格控件&#xff0c;如何在属性中设置某一列显示为图片&#xff08;图片按钮&#xff…

IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南

IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南 什么是 Type Hierarchy&#xff1f; Type Hierarchy 是 IntelliJ IDEA 提供的一个工具&#xff0c;允许开发者查看某个类的继承关系及其实现的接口结构。它是理解类关系的重要工具&#xff0c;尤其在处理复杂的继承体系…

分布式ID的实现方案

1. 什么是分布式ID ​ 对于低访问量的系统来说&#xff0c;无需对数据库进行分库分表&#xff0c;单库单表完全可以应对&#xff0c;但是随着系统访问量的上升&#xff0c;单表单库的访问压力逐渐增大&#xff0c;这时候就需要采用分库分表的方案&#xff0c;来缓解压力。 ​…

Python爬虫-汽车之家各车系周销量榜数据

前言 本文是该专栏的第43篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者在文章《Python爬虫-汽车之家各车系月销量榜数据》中,有详细介绍,如何爬取“各车系车型的月销量榜单数据”的方法以及完整代码教学教程。 而本文,笔者同样以汽车之家平台为例,…

Unity-Mirror网络框架-从入门到精通之RigidbodyBenchmark示例

文章目录 前言示例代码逻辑测试结论性能影响因素最后前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计,它…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…

Linux简介和环境搭建

Linux 介绍和环境搭建 1、发行版本 Linux 操作系统有多个主流发行版本&#xff0c;每个版本根据不同的目标、特点和使用场景为用户提供了不同的功能和体验。 Ubuntu • 特点&#xff1a;Ubuntu 是最为人熟知的 Linux 发行版之一&#xff0c;强调易用性和用户友好性&#xff…

代码随想录刷题day07|(数组篇)58.区间和

目录 一、数组理论基础 二、前缀和 三、相关算法题目 四、总结 五、待解决问题 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 代码随想录 (programmercarl.com) 特点&#xff1a; 1.下标从0开始&#xff0c;内存中地址空间是连续的 2.查询快&…

多模态论文笔记——CLIP

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍这几年AIGC火爆的隐藏功臣&#xff0c;多模态模型&#xff1a;CLIP。 文章目录 CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09…

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化

还是一篇基于dust3r的稀疏视角重建工作&#xff0c;作者联合优化了相机内外参与GS模型&#xff0c;实验结果表明优于noposplat。 abstract 在本文中&#xff0c;提出了一种新颖的可泛化高斯方法 SmileSplat&#xff0c;可以对无约束&#xff08;未标定相机的&#xff09;稀疏多…

Linux学习day2

经过上次我们完成了linux云服务器的安装&#xff0c;今天我们学习一些linux基本指令&#xff0c;是我们使用linux系统的基础 思考&#xff1a;输入指令&#xff0c;让操作系统执行&#xff0c;其实是在做什么呢&#xff1f; Linux环境中&#xff0c;做类似于windows的操作。l…

给DevOps加点料:融入安全性的DevSecOps

从前&#xff0c;安全防护只是特定团队的责任&#xff0c;在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时&#xff0c;这样做没什么问题&#xff1b;但是现在&#xff0c;这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期&#xff08;有时…

【2024年华为OD机试】 (B卷,100分)- 座位调整(Java JS PythonC/C++)

一、问题描述 题目描述 疫情期间课堂的座位进行了特殊的调整&#xff0c;不能出现两个同学紧挨着&#xff0c;必须隔至少一个空位。 给你一个整数数组 desk 表示当前座位的占座情况&#xff0c;由若干 0 和 1 组成&#xff0c;其中 0 表示没有占位&#xff0c;1 表示占位。 …

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息

网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分&#xff0c;剩下的 6 位是主机部分。对应的子网掩码为 255…

IMX6U Qt 开发环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、交叉编译 1. 安装通用 ARM 交叉编译工具链 2. 安装 Poky 交叉编译工具链 二、编译出厂源码 1. U-boot 2. 内核和模块 3. 编译出厂 Qt GUI 综合 Demo 前言…

【2024年华为OD机试】(B卷,100分)- 找终点 (Java JS PythonC/C++)

一、问题描述 题目描述 给定一个正整数数组&#xff0c;设为 nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始&#xff0c;正好走到数组最后一个成员&#xff0c;所使用的最少步骤数。 要求&#xff1a; 第一步必须从第一元素开始&#xff0c;且 1<第一…

RabbitMQ-集群

RabbitMQ集群----主备关系&#xff0c;在运行的时候&#xff0c;如果非主要节点宕机&#xff0c;程序操作 不受影响&#xff1b; 如果主节点宕机了&#xff0c; 程序会中断操作。 而Rabbitmq集群&#xff0c;会马上让没有宕机的节点参选&#xff0c;选出新的主要节点。 程序重试…

postgresql分区表相关问题处理

1.使用pg_cron按日创建分区表&#xff0c;会出现所在数据库对应用户权限不足的问题。 原因是pg_cron运行在postgres数据库中&#xff0c;是用superuser进行执行的&#xff0c;对应的分区表的owner为postgres&#xff0c;所以需要单独授权对表的所有操作权限。不知道直接改变ow…