什么是容器?
解释
假设您正在开发一款杀手级 Web 应用程序,该应用程序具有三个主要组件 - React 前端、Python API 和 PostgreSQL 数据库。如果您想开发此项目,您需要安装 Node、Python 和 PostgreSQL。
您如何确保您拥有与团队中的其他开发人员、CI/CD 系统或生产中使用的版本相同的版本?
您如何确保应用程序所需的 Python(或 Node 或数据库)版本不受您机器上已安装内容的影响?您如何管理潜在的冲突?
容器登场!
什么是容器?简单地说,容器是为应用程序的每个组件提供的隔离进程。每个组件 - 前端 React 应用程序、Python API 引擎和数据库 - 都在自己的隔离环境中运行,完全与机器上的其他所有内容隔离。
以下列出了容器的优势。容器是
- 自包含的。每个容器都包含其正常运行所需的一切,不依赖主机上的任何预安装依赖项。
- 隔离的。由于容器是在隔离的环境中运行的,因此它们对主机和其他容器的影响很小,从而提高了应用程序的安全性。
- 独立的。每个容器都是独立管理的。删除一个容器不会影响其他容器。
- 可移植的。容器可以在任何地方运行!在开发机器上运行的容器将与数据中心或云中的任何地方运行的方式相同!
容器与虚拟机 (VM)
不深入探讨,VM 是一个完整的操作系统,具有自己的内核、硬件驱动程序、程序和应用程序。仅仅为了隔离单个应用程序而启动 VM 会产生很大的开销。
容器只是一个隔离的进程,其中包含其运行所需的所有文件。如果您运行多个容器,它们将共享相同的内核,使您能够在更少的基础设施上运行更多应用程序。
一起使用 VM 和容器
通常,您会看到容器和 VM 同时使用。例如,在云环境中,配置的机器通常是 VM。但是,与其配置一台机器来运行一个应用程序,不如配置一台具有容器运行时的 VM 来运行多个容器化应用程序,从而提高资源利用率并降低成本。
试一试
在本动手实践中,您将看到如何使用 Docker Desktop GUI 运行 Docker 容器。
使用以下说明来运行容器。
打开 Docker Desktop 并选择顶部导航栏上的**搜索**字段。
在搜索输入中指定
welcome-to-docker
,然后选择**拉取**按钮。成功拉取镜像后,选择**运行**按钮。
展开**可选设置**。
在**容器名称**中,指定
welcome-to-docker
。在**主机端口**中,指定
8080
。选择**运行**以启动容器。
恭喜!您刚刚运行了第一个容器!🎉
查看您的容器
您可以通过转到 Docker 仪表板的**容器**视图来查看所有容器。
此容器运行一个 Web 服务器,该服务器显示一个简单的网站。在处理更复杂的项目时,您将在不同的容器中运行不同的部分。例如,您可以为前端、后端和数据库运行不同的容器。
访问前端
启动容器时,您将容器的一个端口暴露到您的机器上。可以将其视为创建配置,使您能够通过容器的隔离环境进行连接。
对于此容器,前端在端口8080
上可访问。要打开网站,请选择容器**端口(s)**列中的链接,或访问https://127.0.0.1:8080 在您的浏览器中。
探索您的容器
Docker Desktop 允许您探索和交互容器的不同方面。亲自动手尝试一下。
转到 Docker 仪表板中的**容器**视图。
选择您的容器。
选择**文件**选项卡以探索容器的隔离文件系统。
停止您的容器
docker/welcome-to-docker
容器将继续运行,直到您停止它。
转到 Docker 仪表板中的**容器**视图。
找到您要停止的容器。
选择**操作**列中的**停止**操作。
按照以下说明使用 CLI 运行容器
打开您的 CLI 终端,并使用
docker run
命令启动容器$ docker run -d -p 8080:80 docker/welcome-to-docker
此命令的输出是完整的容器 ID。
恭喜!您刚刚启动了第一个容器!🎉
查看正在运行的容器
您可以使用docker ps
命令验证容器是否已启动并正在运行
docker ps
您将看到类似于以下内容的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1f7a4bb3a27 docker/welcome-to-docker "/docker-entrypoint.…" 11 seconds ago Up 11 seconds 0.0.0.0:8080->80/tcp gracious_keldysh
此容器运行一个 Web 服务器,该服务器显示一个简单的网站。在处理更复杂的项目时,您将在不同的容器中运行不同的部分。例如,frontend
、backend
和 database
的不同容器。
提示
docker ps
命令只显示正在运行的容器。要查看已停止的容器,请添加-a
标志以列出所有容器:docker ps -a
访问前端
启动容器时,您将容器的一个端口暴露到您的机器上。可以将其视为创建配置,使您能够通过容器的隔离环境进行连接。
对于此容器,前端在端口8080
上可访问。要打开网站,请选择容器**端口(s)**列中的链接,或访问https://127.0.0.1:8080 在您的浏览器中。
停止您的容器
docker/welcome-to-docker
容器将继续运行,直到您停止它。您可以使用 docker stop
命令停止容器。
运行
docker ps
以获取容器的 ID将容器 ID 或名称提供给
docker stop
命令docker stop <the-container-id>
提示
在通过 ID 引用容器时,您不需要提供完整的 ID。您只需要提供足够的 ID 以使其唯一。例如,之前的容器可以通过运行以下命令来停止
docker stop a1f
其他资源
以下链接提供了有关容器的更多指导
下一步
既然您已经了解了 Docker 容器的基础知识,现在该了解 Docker 镜像了。