什么是 docker?
Docker 是基于 Go 语言开发实现的一个开源应用容器引擎,利用 Linux 内核的 cgroup、namespace、AUFS 类的 Union FS 技术对进程进行封装和隔离,同时还可以实现虚拟化。隔离的进程独立于宿主机和其他隔离的进程,所以又称为容器。
Docker 容器可以理解为一个轻量级的沙箱,每个容器内运行一个应用程序。不同容器之间相互隔离,容器之间可以通过网络进行通信。创建和停止容器非常快,几乎和创建和停止原生应用程序一样;另外容器本身对系统资源的额外要求也非常有限,远低于传统虚拟机。
为什么要使用 Docker 容器?
对于开发者和运维人员来说,最期望的效果是一次创建或配置,然后随时随地运行应用。对于算法研究人员来说,不同的算法可能需要不同版本的软件,因此在同一个环境中就会存在冲突。Docker 的环境隔离可以很方便地用于不同环境的配置。具体来说,Docker 有以下优势:
1.快速交付和部署
使用Docker,开发人员可以使用镜像快速构建标准化的开发环境。开发完成后,测试人员和运维人员可以使用完全相同的环境部署代码。只要代码已经开发并测试完成,就可以无缝运行在生产环境中。Docker可以快速创建和删除容器,实现快速迭代。
2. 高效的资源利用
运行Docker容器不需要额外的虚拟化管理程序的支持,Docker是内核级的虚拟化,只需要很少的额外资源就能达到较高的性能。
3. 轻松迁移和扩展
Docker容器几乎可以运行在任何平台上,包括物理机、虚拟机、公有云、私有云、服务器等,并且支持主流的操作系统发行版。这种兼容性让用户可以轻松地在不同平台之间迁移应用程序。
4. 简单的更新管理
通过使用Dockerfile生成镜像,只需要进行少量的配置变更,即可取代以往大量的更新工作部署软件部署软件,所有的变更都是分布式、增量式更新,从而实现自动化、高效的容器管理。