Docker 教程
什么是Docker
Docker 是一种使用 Go语言 开发的在容器内运行应用程序的工具。它是开源的,并遵从Apache2.0协议。 容器将应用程序需要运行的所有依赖项和代码打包到一个文件中,该文件将在任何机器上以相同的方式运行。
Docker 在概念上类似于虚拟机,只是它更轻量。 Docker 不是运行一个完整的独立操作系统(这是一个巨大的开销),而是运行容器,这些容器使用相同的主机操作系统,并且只在软件级别进行虚拟化。
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 使运行多个服务器变得非常容易,尤其是使用 Kubernetes 和 Docker Swarm 等引擎。
Docker 还允许我们组织代码来部署在新服务上。 假设有一个用于应用程序的 Web 服务器。 你可能在那个服务器上安装了很多东西,有一个用于托管静态内容的 nginx Web 服务器,还可能有一个用于在后端存储一些东西的数据库,并且还有一个在 Express 上运行的 API 服务器。 js也是如此。 理想情况下,我们会将这些拆分为单独的应用程序以在单独的服务器上运行,但开发可能会变得混乱。
Docker 会帮助解决上面这个代码混乱的问题; 我们可以打包 Web 服务器并使用 nginx 容器运行它,还可以打包 API 服务器并使用 Node.js 容器运行它,而且还可以打包数据库并在它自己的容器中运行它(尽管这可能 不是最好的主意,但有可能)。 我们可以使用这三个 Docker 容器并在同一台机器上运行它们。 如果需要切换服务器,只需将这些容器迁移到新服务器即可。 如果需要扩展,则可以将其中一个容器移至新服务器,或将其部署在服务器集群中。
谁适合阅读本教程?
本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。