docker容器详解二:docker概念和第一个容器尝试

版权声明:博客均属作者创作,转载必须声明 https://blog.csdn.net/qq_37120676/article/details/83019354

docker原理

Docker是基于Go语言实现的云开源项目。Docker的主要作用是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的包括不仅限于数据库web等应用及其运行环境能够做到“一次封装,到处运行”。
docker通过镜像生成容器,容器添加新的功能再重新生成新的镜像,通过一层一层的嵌套生成一个完整的应用并有它的独立的运行环境。通过封装之后可以在每一个docker引擎上运行。而Docker引擎的基础是Linux自带的容器技术。
容器有效的将单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化和系统调用替换中的复杂性。
我们可以将容器理解为一种封闭的沙盒。每个容器内运行一个应用,不同的容器相互隔离,容器之间可以建立通信机制。容器的创建和停止都十分快速一般保持在秒级,容器自身对资源的需求十分有限,远比虚拟机本身占用的资源少。

docker的一些重要概念

镜像:镜像类似于与虚拟机中的镜像,它是一个只读文件,包含了自己的文件系统,一个镜像包含着一个操作系统以及它的应用所需要的运行环境,应用在里面属于一个封闭的空间不受其他影响,镜像是由是操作系统和运行环境以及应用所组成,镜像是容器中最基础的单元,也是通过镜像镜像传输,通过生成容器来搭建一个新的镜像。
镜像的一些命令:
docker images 来查看镜像
docker pull 可以从网上或者自己的docker仓库下载镜像
docker run 运行镜像生成容器
容器:容器是通过镜像所创建的实例,它是一个可以读写的操作系统,可以在内部进行每一层layer的搭建与部署,最终生成新的镜像。它类似与一个新建的虚拟机,在虚拟机中进行操作,也可以进行开机和关机的操作。
容器的相关命令:
docker stop/start 打开关闭容器

docker与虚拟化的区别

在这里插入图片描述

先来理解一下虚拟机概念,广义来说,虚拟机是一种模拟系统,即在软件层面上通过模拟硬件的输入和输出,让虚拟机的操作系统得以运行在没有物理硬件的环境中(也就是宿主机的操作系统上),其中能够模拟出硬件输入输出,让虚拟机的操作系统可以启动起来的程序,被叫做hypervisor。然后在上面运行独立的操作系统,类似与一台独立的机器。
一般来说,虚拟机都会有自己的kernel,自己的硬件,这样虚拟机启动的时候需要先做开机自检,启动kernel,启动用户进程等一系列行为,虽然现在电脑运行速度挺快,但是这一系列检查做下来,也要几十秒,也就是虚拟机需要几十秒来启动。其实我们创建虚拟机也不一定需要模拟硬件的输入和输出,假如宿主机和虚拟机他们的kernel是一致的,就不用做硬件输入输出的搬运工了,只需要做kernel输入输出的搬运工即可,为了有别于硬件层面的虚拟机,这种虚拟机被命名为 操作系统层虚拟化:Operating-system-level virtualization 也被叫做容器。
容器限制需要一个docker引擎就可以在上面运行自己的程序。
容器主要是通过下载的镜像,然后运行成为一个容器,通过容器的操作,生成新的镜像,一层一层往上面嵌套。而且与虚拟机镜像不同的是容器的一个镜像例如ubuntu只要100M不到,而虚拟机的镜像需要好几个G。除此之外,一个宿主机可以运行十个甚至几十个都不会造成很大的内存压力,但是虚拟机运行三个基本上整个电脑就会非常卡顿了。

新建一个docker

下面来通过命令成功运行一个容器
在这里插入图片描述通过docker images/image ls/docker list/等命令来查看镜像。
命令显示的分别是: 镜像名 标签(在镜像名相同时得以区分不同镜像) 容器id 创建时间
在这里插入图片描述
通过docker run 命令运行一个镜像生成容器 run后面跟上容器名 输出一个 “hello world”
这里需要注意的是 这个容器在运行之后立即退出了,这里就不做详解,留下伏笔,在下一章节具体讲run命令时候做解释。
在这里插入图片描述
然后可以通过 docker ps 命令来查看容器的运行状态。在状态栏可以发现容器已经退出在两分钟之前。 这里同事也有一个容器的id,注意他和镜像id不是一个东西,镜像可以理解为虚拟机的镜像,运行镜像生成容器可以理解为生成一个新的虚拟机。这个时候这个容器是退出状态。
在这里插入图片描述通过start可以再次打开他,会返回他的id。在这相当于虚拟机的重启。

猜你喜欢

转载自blog.csdn.net/qq_37120676/article/details/83019354