千家信息网

Docker和虚拟机的区别有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Docker和虚拟机的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.Docker是什么?(1)Dock
千家信息网最后更新 2026年11月02日Docker和虚拟机的区别有哪些

这篇文章主要介绍了Docker和虚拟机的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一.Docker是什么?

(1)Docker是在Linux容器里运行应用的开源工具,是一种轻量级的"虚拟机"

Logo设计为蓝色鲸鱼,鲸鱼可以看作为宿主机,上面的集装箱可以理解为相互隔离的容器,每个集装箱中包含自己的应用程序。

(2)Docker和虚拟机的区别

作为一种轻量级的虚拟化方式,Docker 与传统虚拟机相比具有显著的优势。

Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虛拟机操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化,
如图:

(3)Docker的使用场景

现在开发者需要能方便地创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是Docker所能提供的。Docker 的容器技术可以在一台主机 上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。

二.Docker的核心概念及安装

(1)镜像

Docker的镜像(mage) 是创建容器的基础,类似虚拟机的快照
可以理解为是一一个面向Docker容器引擎的只读模板。比如,一个镜像可以是一个完整的 CentOS 操作系统环境,称为-个CentOS
镜像;可以是一个安装了MySQL的应用程序,称为一个MySQL镜像,等等。

(2)容器

Dooker的容器(Container) 是从镜像创建的运行实例。它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,可以保证安全性的平台。可以把容器看作一个简易版的Linux环
境,Docker 利用容器来运行和隔离应用。

(3)仓库

Docker仓库(Repository) 是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public) 或者私有仓库(Private), 这样一来当 下次要在另外一台机器上使用这个镜像时,只需要从仓库上拉取下来就可以了。

(4)安装Docker

主机有网的话可以直接安装,

配置yum

[root@localhost ~]# rm -rf /etc/yum.repos.d/*[root@localhost ~]# vim /etc/yum.repos.d/a.repo[aaa]name=asdbaseurl=file:///mediagpgcheck=0[root@localhost ~]# mount /dev/cdrom /media/[root@localhost ~]# yum -y install docker

安装完成可以启动Docker,并设置开机自启

[root@localhost ~]# systemctl start docker[root@localhost ~]# systemctl enable dockerCreated symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version //查看Docker版本Client: Version:     1.13.1 API version:   1.26 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64 Go version:   go1.9.4 Git commit:   8633870/1.13.1 Built:      Fri Sep 28 19:45:08 2018 OS/Arch:     linux/amd64Server: Version:     1.13.1 API version:   1.26 (minimum version 1.12) Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64 Go version:   go1.9.4 Git commit:   8633870/1.13.1 Built:      Fri Sep 28 19:45:08 2018 OS/Arch:     linux/amd64 Experimental:  false

分为服务端与客户端

三.Docker镜像操作

(1)搜索镜像(前提电脑有网)

[root@localhost ~]# docker search dhcpINDEX    NAME                      DESCRIPTION                   STARS   OFFICIAL  AUTOMATEDdocker.io  docker.io/networkboot/dhcpd          Suitable for running a DHCP server for you...  43          [OK]docker.io  docker.io/joebiellik/dhcpd           DHCP server running on Alpine Linux       15          [OK]docker.io  docker.io/gns3/dhcp              A DHCP container for GNS3 using dnsmasq     3          [OK]docker.io  docker.io/instantlinux/dhcpd-dns-pxe      Serve DNS, DHCP and TFTP from a small Alpi...  2          [OK]docker.io  docker.io/ictu/dhcpd-tftpd           dhcpd tftpd container              1          [OK]docker.io  docker.io/marcelwiget/dhcptester        Simple dhcp client simula

(2)获取镜像

[root@localhost ~]# docker pull docker.io/network/dhcpd //下载上面最开头的dhcp

还有一种就是插入已经下载好的dhcp

做成光盘插入到主机中

[root@localhost ~]# mount /dev/cdrom /media/[root@localhost ~]# cd /media/[root@localhost media]# lsdhcp[root@localhost media]# cp dhcp /[root@localhost media]#
[root@localhost /]# docker load < dhcpfccbfa2912f0: Loading layer 116.9 MB/116.9 MBe1a9a6284d0d: Loading layer 15.87 kB/15.87 kBac7299292f8b: Loading layer 14.85 kB/14.85 kBa5e66470b281: Loading layer 5.632 kB/5.632 kBa8de0e025d94: Loading layer 3.072 kB/3.072 kBe2e29955c5aa: Loading layer 12.7 MB/12.7 MB12e14fab4dd4: Loading layer 49.15 kB/49.15 kB47bdfd3bbf39: Loading layer 4.096 kB/4.096 kBLoaded image: docker.io/networkboot/dhcpd:latest

将镜像下载到本地

(3)查看镜像信息

[root@localhost /]# docker imagesREPOSITORY          TAG         IMAGE ID //镜像ID      CREATED       SIZEdocker.io/networkboot/dhcpd  latest       6f98b6b9b486    19 months ago    125 MB
  • REPOSITORY: 镜像属于的仓库。

  • TAG: 镜像的标签信息,标记同一个仓库中的不同镜像。

  • IMAGE ID: 镜像的唯一ID号,唯一标识了该镜像。

  • CREATED: 镜像创建时间。

  • CREATED: 镜像创建时间。

[root@localhost /]# docker inspect 6f98b6b9b486 \查看镜像ID详细信息

镜像的详细信息中包括创建时间、系统版本.主机名.域名.用户.卷.标签.操作系统.设备ID等各种信息。

[root@localhost /]# docker tag docker.io/networkboot/dhcpd dhcp:dhcp 第一个dhcp:名称第二个dhcp:标签

(4)删除镜像

[root@localhost /]# docker rmi dhcp:dhcpUntagged: dhcp:dhcp

四.Docker容器操作

容器是Docker的另一一个核心概念,简单来说,容器是镜像的一个运行实例,是独立运行的一个或一组应用及它们所必需的运行环境,包括文件系统、系统类库. shell 环境等。镜像是只读模板,而容器会给这个只读模板一个额外的可写层

(1)容器的创建与启动

[root@localhost /]# docker create -it docker.io/networkboot/dhcpd /bin/bashe392026ddd186d01cbd3306acae15f2f197dc9874a84ea241d347c7fe20a0946

常用选项: -i表示让容器的输入保持打开: -t表示让Docker分配一个伪终端。

[root@localhost /]# docker ps -a \\查看所有容器运行状态CONTAINER ID    IMAGE             COMMAND         CREATED       STATUS       PORTS        NAMESe392026ddd18    docker.io/networkboot/dhcpd  "/entrypoint.sh /b..."  About a minute ago  Created                 elegant_goldwasser

输出信息显示容器的ID号.加载的镜像.运行的程序.创建时间、目前所处的状态、端口映射.容器名称等。其中状态-栏为Created表示当前的容器是新创建的并处于停止状态。

[root@localhost /]# docker start e392026ddd18  \\启动容器 ,上面的IDe392026ddd18

容器启动后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。

(2)容器的运行与终止

[root@localhost /]# docker stop 容器的ID号

(3)容器的进入

[root@localhost /]# docker exec -it e392026ddd18 /bin/bashroot@e392026ddd18:/#

用户可以通过所创建的终端来输入命令,通过exit命令退出容器.

root@e392026ddd18:/# lsbin  core entrypoint.sh home lib64 mnt proc run  srv tmp varboot dev  etc      lib  media opt root sbin sys usrroot@e392026ddd18:/# exitexit

(4)容器的导出导入

容器是最小化,导致一些命令不能使用,所以就要从容器里面导出到本地来设置,设置完再导入进容器就可以。

导出命令如下:

[root@localhost /]# docker export e392026ddd18>/etc/dhcp/dhcpd.conf

乱数字为容器的ID号

把dhcp主配置文件导出来配置,

导入命令如下:

[root@localhost /]# docker import /etc/dhcp/dhcpd.conf > e392026ddd18

(5)容器的删除

可以使用dockerrm命令将一个已经终止状态的容器进行删除。

一个镜像可以包含多个容器

[root@localhost /]# docker stop e392026ddd18  \\先停止e392026ddd18[root@localhost /]# docker rm e392026ddd18  \\再删除e392026ddd18[root@localhost /]# docker ps -aCONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES

五.Docker资源控制

Cgroup是Controlgroup的简写,是Linux内核提供的一种限制所使用物理资源的机制,这些资源主要包括CPU.内存、blkio。 下面就这3个方面来谈一下Docker是如何使用Cgroup机制进行管理的。

(1)限制CPU使用速率

例如,将容器60ff4594cc73的CPU使用设置为20000,设置CPU的使用率限定为20%:

[root@localhost ~]# echo 20000 >/sys/fs/ cgroup/ cpu/ system. slice/docker-60ff4594cc73b5474477 636b25b41f 16e1 66a3606aed22 6522d420d0c296990d. scope/cpu . cfs_ quota _us

(2)多任务按比例分享CPU

例如,运行3个新建容器A. B、C,占用CPU资源的比例为1:1:2就可以这样执行:

[root@localhost /]# docker run -tid --cpu-shares 1024  +镜像A[root@localhost /]# docker run -tid --cpu-shares 1024  +镜像B[root@localhost /]# docker run -tid --cpu-shares 2048  +镜像C

感谢你能够认真阅读完这篇文章,希望小编分享的"Docker和虚拟机的区别有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

容器 镜像 运行 系统 应用 仓库 命令 状态 信息 操作系统 时间 程序 资源 主机 环境 篇文章 应用程序 标签 模板 轻量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 互联网核心科技是什么 互联网品科技 天下捷融互联网科技 火传媒上海互联网科技 上海亿帐通互联网科技 互联网 科技服务平台 互联网科技公司的市场部门 汽车互联网创新科技园 青岛科技大学互联网大赛研究生 成都互联网科技公司工作好不好 恒生互联网科技指数跳水 天津腾达互联网科技有限公司 允成互联网科技有限公司融资 徐州市互联网科技有限公司 互联网科技圈年度人物 山东子淼互联网科技有限公司 神州科技互联网有限公司 互联网金融运营模式中的金融科技 恒生科技指数 中概互联网 互联网科技网 科技赋能下的互联网金融 深圳恒合互联网络科技有限公司 现代科技和互联网有关系吗 晓花互联网科技有限公司网址 科技大学互联网 半导体是互联网高科技吗 广州智享互联网科技 互联网金融运营模式中的金融科技 恒生互联网科技趋势
0