教程 > Docker 教程 阅读:445

Docker 教程

什么是Docker

Docker 是一种使用 Go语言 开发的在容器内运行应用程序的工具。它是开源的,并遵从Apache2.0协议。 容器将应用程序需要运行的所有依赖项和代码打包到一个文件中,该文件将在任何机器上以相同的方式运行。

Docker 在概念上类似于虚拟机,只是它更轻量。 Docker 不是运行一个完整的独立操作系统(这是一个巨大的开销),而是运行容器,这些容器使用相同的主机操作系统,并且只在软件级别进行虚拟化。

Docker 容器 vs 虚拟机
Docker 容器 vs 虚拟机

Docker Engine 可以在 Linux、Windows 和 macOS 上运行,并支持 Linux 和 Windows 用于 Docker 容器。 Linux 的版本实际上并不重要。 大多数版本的 Linux 将运行相同的内核,只是用户软件不同。 Docker 可以将此用户软件安装到容器中,允许我们在 Ubuntu 上运行 CentOS 容器。 例如,不能在 Ubuntu 上运行 FreeBSD,因为内核不同。

Docker 容器镜像仅包含应用程序需要运行的内容。 如果应用程序使用 nginx 和 Node.js,容器镜像将包含它们,但不会被通常在 Linux 上找到的所有其他用户态应用程序所影响。


Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

为什么使用 Docker

Docker 采用与 Git 和 NPM 等工具提供的相同类型的版本控制和打包,并允许我们将其用于服务器软件。 由于容器是单个镜像,因此可以很容易地对容器的不同构建进行版本跟踪。 而且由于所有内容都包含在内,从而使得管理所有依赖项变得更加容易。

有了 Docker,我们的开发环境会和生产环境一模一样,也和其他人的开发环境一模一样,缓解 “在我的机器上坏了!”的问题。

如果想在集群中添加另一台服务器,则不必担心重新配置该服务器并重新安装所需的所有依赖项。 构建容器后,我们可以与任何人共享容器文件,他们可以通过一些命令轻松启动并运行我们的应用程序。 Docker 使运行多个服务器变得非常容易,尤其是使用 KubernetesDocker Swarm 等引擎。

Docker 还允许我们组织代码来部署在新服务上。 假设有一个用于应用程序的 Web 服务器。 你可能在那个服务器上安装了很多东西,有一个用于托管静态内容的 nginx Web 服务器,还可能有一个用于在后端存储一些东西的数据库,并且还有一个在 Express 上运行的 API 服务器。 js也是如此。 理想情况下,我们会将这些拆分为单独的应用程序以在单独的服务器上运行,但开发可能会变得混乱。

Docker 会帮助解决上面这个代码混乱的问题; 我们可以打包 Web 服务器并使用 nginx 容器运行它,还可以打包 API 服务器并使用 Node.js 容器运行它,而且还可以打包数据库并在它自己的容器中运行它(尽管这可能 不是最好的主意,但有可能)。 我们可以使用这三个 Docker 容器并在同一台机器上运行它们。 如果需要切换服务器,只需将这些容器迁移到新服务器即可。 如果需要扩展,则可以将其中一个容器移至新服务器,或将其部署在服务器集群中。


谁适合阅读本教程?

本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。

查看笔记

扫码一下
查看教程更方便