1. VM Vs. Docker
应用在Docker中跑起来是什么样的?
虚拟机和容器的结构对比虚拟机下,是硬件→操作系统→Hypervisor→虚拟机操作系统→配置虚拟机依赖环境→安装App
容器时代,硬件→操作系统→Docker Engine→运行所需要的依赖环境→安装App
容器的运行不需要安装虚拟机的操作系统,是比虚拟机更加轻量的虚拟化技术。
Docker容器共用一个Kernel,而虚拟机使用自己操作系统的Kernel→虚拟机拥有比Docker更好的隔离性。
Docker有更多的优势:
- 虚拟机操作系统的存在,占用了更多的计算资源;
- 空间占用上,虚拟机是GB级,Docker可以小至几MB;
- Docker的启动时间更快(毫秒级);
- Docker有更强的快速扩展能力、跨平台迁移能力
2. Docker的重要概念:容器、镜像、仓库
- 容器:与虚拟机一样都是承载相关应用的载体
- 镜像:当容器安装了特定的应用之后,就可以将其打包成镜像。需要应用的时候,将镜像下载下来,就可以快速运行起来。
- 仓库:存储镜像的地方。
3. Docker容器的使用
Docker容器的状态三种状态:Running、Stopped和Paused,与虚拟机的运行、关机、挂起状态相似。
4. Docker镜像
镜像的生成当把镜像下载到本地之后,可以使用Docker run的命令,启动一个基于这个镜像的容器。对容器修改之后,可以将其commit回去,生成一个新版本的镜像。
镜像的层级结构Docker镜像是一种层级结构的文件系统,最上层往往是可写的,存储了已经运行的容器的修改信息当对容器进行kill的时候,修改信息就会被删掉。当容器被commit成镜像的时候,这些修改信息也会保存成新的层级。
镜像的生成除了使用commit之外,还可以使用Dockerfile(更标准、更常用)。这种方式生成出来的镜像更加干净、透明。
5. Docker仓库
Dockerhub和私有仓库Dockerhub是Docker的官方仓库,存放着各种官方的标准镜像。可以使用pull命令直接从Dockerhub中下载镜像到本地进行使用。
还可以构建自己的镜像仓库,用于存放常用的镜像以及企业自定义的应用镜像。可以从私有仓库中下载、上传镜像。
6. Docker核心技术:Build, Ship, Run
Docker的主要操作首先利用Dockerfile将组建Build成为一个镜像,然后将镜像上传到企业自定义的镜像仓库中。
当我们需要镜像的时候,可以从任何地方连接到镜像仓库中,将镜像下载到本地,然后一键将其Run起来。
这就是"Build once, run everywhere":一次构建,任何地方都能运行。
7. Docker数据卷
保存Docker数据容器一旦关闭,修改信息就会丢失,这对于一些有状态的应用来说往往是不可接受的。
可以通过给文件挂载文件目录或者存储来解决,从而可以存储容器运行中的一些数据。这样,当容器崩溃,重启容器的时候,依然可以访问之前容器存储下来的一些数据。
这种方式也可以解决一些主机和容器之间的数据访问。
8. Docker网络
实现容器之间的通信、容器与外部之间的通信。
四种模式:
- Bridged:表示容器可以与主机上的容器,主机上的外部进行通信
- Host:表示容器只能与主机通信
- Container:表示容器只能与容器通信
- None:没有网络连接
比较常用的是Birdged模式。主机会生成一个Docker网桥,每个容器可以拥有自己的虚拟网卡,容器网卡通过网桥连接到主机的物理网卡,与外部进行通信。
网友评论