一、概述
Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 快速交付、测试和部署代码的方法,您可以显着减少编写代码和在生产环境中运行之间的延迟。这是官方解释
简单的来说,docker的作用就是把开发的应用以及依赖的环境打包成一个镜像,发布到远程仓库的工具,以便于拉到镜像后直接部署
二、docker解决了什么问题
1、解决环境的切换和配置
在过往经历中大家都可能经历过应用程序的部署,如果部署一个java应用,需要先部署jdk、mysql、tomcat等。通过docker可以同时把这些依赖的资源同时达到一个包中作为一个镜像,在不同的服务器上部署应用时,直接pull这个景象都可以运行
2、解决应用之间的隔离
docker容器之间是相互隔离的,不能直接进行通信,做到相互不影响
3、相同配置的服务器能够部署更多的应用,使服务器利用的极致
三、虚拟机和docker
左边是虚拟机右边是容器
传统的虚拟机先虚拟出一个完整的操作系统,然后在这个系统上安装和运行软件
容器内的应用程序直接运行在宿主机内,容器是没用自己的内核,也没有虚拟硬件,多个容器在一个服务器上运行,共享操作系统
每个容器相互隔离,均独有自己的文件系统,互不影响
由于虚拟机和docker的区别,也就造就了docker比虚拟机启动快;占用空间少,更有效的利用服务器的资源
四、docker 架构
Docker 使用客户端-服务器架构。Docker 守护进程,侦听 Docker API 请求并管理 Docker 对象,例如图像、容器、网络和卷,负责构建,运行和分发Docker容器。Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程
客户端负责将命令发送给docker(docker守护程序)执行
docker 镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的用于创建容器的模板(可以理解为Java语言中的类)
docker容器
容器是从镜像创建的应用运行实例,它可以启动、停止、删除。
容器之间都是相互隔离、互不可见的。Docker容器类似一个轻量级的沙盒,Docker利用容器来运行和隔离应用。可以把容器看作一个简易版的Linux系统环境(包含root权限、进程空间、用户空间、网络空间等)以及运行在其中的应用程序打包而成的盒子。
就像java中new了一个对象类似
docker仓库
Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所。
五、docker部署
六、docker命令总结