Part 01 Docker概述
Docker是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker的架构如下:
Part 02 特性
➤ 文件系统隔离
每个进程容器运行在一个完全独立的根文件系统里。
➤ 资源隔离
系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
➤ 网络隔离
每个进程容器运行在自己的网路空间,虚拟接口和IP地址。
➤ 日志记录
Docker将收集到和记录的每个进程容器的标准流,用于实时检索或者批量检索。
➤ 变更管理
容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或者手动配置。
➤ 交互式shell
Docker可以分配一个虚拟终端并且关联到任何容器的标准输出上,例如运行一个一次性交互shell。
Part 03 Docker与虚拟机的区别
Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。
两者有什么差异呢?
虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。
Docker仅仅是封装函数库,并没有模拟完整的操作系统,如图:
对比来看:
图片
Part 04 Docker部署java web应用
4.1 下载系统镜像(以CentOS为例)
使用命令:docker images查看下载情况
4.2 根据该镜像创建容器
查看已经运行的容器列表命令:docker ps
查看所有容器,然后使用容器启动命令,运行刚才创建的centos容器:docker start stupefied_perlman
4.3 在容器中添加相应依赖
容器创建好以后,需要进入到容器中添加相关依赖,进入容器的命令如下:
4.4 将已经部署了环境依赖的容器提交为新镜像
4.5 基于新镜像运行javaweb容器