Docker与容器的区别

2023-05-16

容器

 

虚拟机和容器结构主要区别在于中间两层,虚拟机自带了操作系统,这个操作系统可以和宿主机一样,也可以不一样,而容器是和宿主机共享一个操作系统。我们知道,操作系统的内容是很多的,就像我们自己电脑上的操作系统一样,占用的内存很多,启停很慢,而且如果虚拟机安装的操作系统有更新,那更新也很麻烦,而且购买正版操作系统也是一笔不小的费用。而容器则没有这些烦恼,所以容器相对于虚拟机而言,既可以提供独立的软件运行环境,占用内存也小,启停速度快,操作更简单,更轻量级。

Docker

Docker不等同于容器,它是基于容器技术开发的一个应用,docker包含了运行一个应用程序所需要的所有东西,包括:代码、运行时、各种依赖和配置。那么这里面的代码、依赖、配置就是docker镜像包含的内容,而运行镜像里的内容则是容器做的事情,也就是运行时。
Docker镜像

Docker镜像是一个文件系统,上文提到,其中包含了应用程序运行时所需的源代码、依赖、配置等。我们自身的应用代码可以根据dockerfile构建出一个镜像,然后上传到镜像仓库。docker提供了公有镜像仓库docker hub,这里面的镜像可以供所有人下载使用。可以将镜像理解为软件安装包,下载之后就开箱即用。Docker容器里的镜像是可以层层叠加的,比如运行我们的应用程序,需要使用mysql数据库,需要python运行环境,那么docker容器里只要要有mysql镜像、python镜像、我们自己的应用程序镜像。Docker镜像是静态的,像软件安装包一样,没有运行环境是不可以运行的,那么docker容器就提供了这样一个运行环境。
Docker容器

Docker容器就是容器,在docker里,提供了运行docker镜像的运行时环境。运行容器时,在镜像层上面增加了一个读写层,可以对运行的容器做一些更改,但这些更改不会对镜像产生影响,如果关闭或删除容器后,这些更改也不会保存。那么如果保存运行时的一些数据,进行持久化存储,那就是卷(volume)做的事情,这是docker里的另一个概念,这里不做详述。
镜像和容器的关系

由上文描述可见,Docker容器和docker镜像都是docker系统的一部分,密切相关。镜像可以独立于容器存在,但容器得依赖于镜像,容器利用镜像来构建一个运行时环境以此运行一个应用程序。利用docker运行应用程序的过程一般如下:编写应用程序–》编写dockerfile–》根据dockerfile构建镜像–》上传镜像到镜像仓库–》使用docker容器运行该镜像。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker与容器的区别 的相关文章

随机推荐

  • 一起做激光SLAM[六]isam于SLAM位姿因子图优化的使用

    本节目标 xff1a 学习gtsam与isam在二位位姿pose2和三维位姿pose3上的使用 xff0c 并将isam用于位姿的因子图优化 预期效果 xff1a 将ICP匹配带来的瞬间位移变成对之前累积误差的消除 蓝色ICP无图优化 xf
  • java.lang.ClassNotFoundException问题的解决

    作者 xff1a 朱金灿 来源 xff1a https blog csdn net clever101 调试运行一个java项目出现错误 xff0c 错误信息如下 xff1a 严重 Error configuring application
  • Python 获取当前路径(文件及所在文件夹,正斜线)

    参考博客 xff1a http www cnblogs com wind wang p 5822192 html 更多路径读取请参照上述博客 xff08 使用Python 2 x版本 xff09 xff0c 这里只挑出个人认为最直接 常用的
  • 设置 Android Studio 显示 Local Changes 标签页

    参考 xff1a 2020版本idea version control 不见了 解决办法 新版的 jetbrains idea 的 Git 窗口就是之前的 Version Control 窗口 xff0c 但是默认不显示 Local Cha
  • 【C++】C++11 vector 之 emplace_back() 使用场景简单剖析

    emplace 关键字是 C 43 43 11 的一个新特性 emplace back 和 push abck 的区别是 xff1a push back 在向 vector 尾部添加一个元素时 xff0c 首先会创建一个临时对象 xff0c
  • 【C++】nomember named ‘to_string‘ in namespace ‘std’

    在使用 Android Studio 编写 C 43 43 代码时 xff0c 出现如下错误 xff1a nomember named 39 to string 39 in namespace 39 std 39 原因 xff1a 这是因为
  • 【CMake】Make 命令无法正常执行

    问题 在 Linux 系统上使用 CMakeLists txt 编译 C 43 43 项目时 xff0c 执行 cmake 命令之后 xff0c 再执行 make 命令出现了 make 命令不生效的问题 具体的现象是 xff1a cmake
  • 【ProtoBuf】ProtoBuf 通过 proto 文件生成 cc/h 文件

    参考 xff1a protobuf ProtoBuf 通过 proto 文件生成 cc h 文件的步骤如下 xff08 Linux 下 xff09 xff1a 先通过 protobuf 源文件编译出 protoc 可执行文件 span cl
  • 【C++】C++ 单例模式总结(5种单例实现方法)

    本文对 C 43 43 的单例模式进行简单介绍和实现 参考 xff1a C 43 43 线程安全的单例模式总结 xff08 强烈建议阅读原文 xff0c 本文相当于做了总结 xff0c 留作学习 xff0c 并添加了一种新的单例方法 std
  • 【C++】epoll + socket 网络编程实现一个简单的 server

    文章目录 服务端客户端 本着学习 epoll 的态度 xff0c 本文使用 epoll 43 socket 实现了一个简单的 server xff0c 可以接收多个客户端的连接并与之通信 话不多说 xff0c 直接上代码 xff0c 完整的
  • 【已解决】Mac 无法使用 GDB 进行调试的问题

    问题 Mac 初次使用 GDB 进行调试时 xff0c 会出现 xff1a gdb run Starting program usr local bin fabnacci Unable to find Mach task port for
  • 【Git】解决 git pull 提示 Permission denied (publickey) 的问题

    问题 在使用 ssh keygen 创建 github 秘钥时没有使用默认文件 xff0c 而是自定义了 xxx github 的秘钥文件 xff0c 然后将公钥添加到 github 上 之后发现每次 Mac 开机后使用 git pull
  • 【保研复习】数据结构复习笔记

    基于王道数据结构进行的保研面试复习 文章目录 数据结构绪论数据结构1 逻辑结构线性结构线性表栈队列 非线性结构树图集合 xff08 无序 xff09 2 存储结构顺序存储链式存储索引存储散列存储 3 数据的运算 算法特点效率度量时间复杂度空
  • MAVLINK 请求参数和接收参数

    if decodeState 61 61 1 之后是放在mavlink消息解析后面 请求返回参数配置列表 void MavDebug on pushButton 3 clicked mavlink message t msg mavlink
  • JSP与servlet的区别

    一 了解Servlet的概念 Servlet定义 xff1a Servlet是基于Java技术的Web组件 xff0c 由容器管理并产生动态的内容 Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能 Servlet与客户端
  • CSS简单的图片居中

    图片的居中显示 css 有很多方法 xff0c 但在很多情况下有的方法无效 xff0c 这是件很头疼的事情 xff0c 比如 一般设置图片属性 text align center 水平居中 xff0c 但这个方法经常无效 xff0c 很多前
  • jsp中的javabean

    一 JavaBean简介 JavaBean是一种特殊的Java类 xff0c 它遵从一定的设计模式 xff0c 开发工具和其他组件可以根据这种模式来调用JavaBean JSP中使用的JavaBean非常简单 xff0c 这种简单JavaB
  • Session简述

    session概述 session用于记录用户的状态 xff0c 指的是在一段时间内 xff0c 单个客户端和web服务器的一连串相关的交互过程 在一个session中 xff0c 客户可能会多次请求访问同一个资源 xff0c 也有可能请求
  • MVC框架理解

    简介 MVC开始是存在于桌面程序中的 xff0c M是指业务模型 xff0c V是指用户界面 xff0c C则是控制器 xff0c 使用MVC的目的是将M和V的实现代码分离 xff0c 从而使同一个程序可以使用不同的表现形式 比如一批统计数
  • Docker与容器的区别

    容器 虚拟机和容器结构主要区别在于中间两层 xff0c 虚拟机自带了操作系统 xff0c 这个操作系统可以和宿主机一样 xff0c 也可以不一样 xff0c 而容器是和宿主机共享一个操作系统 我们知道 xff0c 操作系统的内容是很多的 x