认识docker
Posted Beua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识docker相关的知识,希望对你有一定的参考价值。
认识docker
一 什么是容器?
官方解释: 容器就是将软件打包成标准化单元,以用于开发,交付部署.
个人理解: 我觉得容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境。
二 什么是docker?
Docker 是世界领先的软件容器平台。Docke最初实现是基于 LXC.
docker优点: 性能好,轻量级,启动快.损耗少.(安全性好)
docker的功能: 它是一个软件打包技术
docker容器的第一个进程(初始命令)必须要夯住,否则容器会退出.
docker主要组件: 镜像,容器,仓库,网络,存储
启动容器必须需要一个镜像,仓库中
2.1为什么要用docker?
a.一致的运行环境
b.启动快
c.隔离性好
d.弹性伸缩,快速扩展
e.迁移方便
f.持续交付和部署
三 容器 vs 虚拟机
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
隔离级别 | 隔离不同的应用 | 彻底隔离整个运行环境 |
四 容器和虚拟化的区别
4.1linux容器技术,容器虚拟化和kvm虚拟化的区别 kvm虚拟化: 需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)
4.2linux开机启动流程: bios开机硬件自检 根据bios设置的优先启动项boot 网卡 硬盘 u盘 光驱 读取mbr引导 2T UEFI(gpt分区) mbr硬盘分区信息,内核加载路径,
加载内核 启动第一个进程/sbin/init systemd 系统初始化完成 运行服务(nginx,httpd,mysql) 。。。
4.3容器启动流程: 共用宿主机内核: 第一个进程直接启动服务(nginx,httpd,mysql)
4.4容器:共用宿主机内核,轻量级,损耗少,启动快,性能高,只能运行linux系统 虚拟机:需要硬件的支持,需要模拟硬件,需要走开机启动流程,可以运行不同的操作系统
五 Docker基本概念
Docker 包括三个基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
简单步骤如下:
Client 执行 “docker run ....” 这条命令时——> 它会查看本地有没有这个“镜像”(image),如果没有就向“镜像仓库”拉取到本地 ——> 然后将拉取的“镜像”运行起来就叫“容器”。
不是很恰当举例,仅供个人参考:
5.1镜像(Image)——一个特殊的文件系统
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
5.2 容器(Container)——镜像运行时的实体
容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
??容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
5.3 仓库(Repository)——集中存放镜像文件的地方
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
??一个 Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
六 Build, Ship, and Run
- Build(构建镜像) : 镜像就像是集装箱包括文件以及运行环境等等资源。
- Ship(运输镜像) :主机和仓库间运输,这里的仓库就像是超级码头一样。
- Run (运行镜像) :运行的镜像就是一个容器,容器就是运行程序的地方。
Docker 运行过程也就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器。所以,我们也常常将Docker称为码头工人或码头装卸工,这和Docker的中文翻译搬运工人如出一辙。
以上是关于认识docker的主要内容,如果未能解决你的问题,请参考以下文章