什么是容器?
解释
想象您正在开发一个很棒的 Web 应用,它有三个主要组件:一个 React 前端、一个 Python API 和一个 PostgreSQL 数据库。如果您想在这个项目上工作,则必须安装 Node、Python 和 PostgreSQL。
您如何确保您与团队中其他开发人员、CI/CD 系统或生产环境中使用的版本相同?
您如何确保应用所需的 Python(或 Node 或数据库)版本不受您机器上已有的软件影响?您如何管理潜在的冲突?
容器来了!
什么是容器?简单来说,容器是应用每个组件的隔离进程。每个组件——前端 React 应用、Python API 引擎和数据库——都在其自身的隔离环境中运行,与您机器上的其他一切完全隔离。
以下是容器的强大之处:容器是
- 自包含。每个容器都包含其运行所需的一切,不依赖于主机上任何预安装的依赖项。
- 隔离。由于容器是隔离运行的,它们对主机和其他容器的影响最小,从而提高了应用的安全性。
- 独立。每个容器都是独立管理的。删除一个容器不会影响其他容器。
- 可移植。容器可以在任何地方运行!在您的开发机器上运行的容器在数据中心或云中的任何位置都能以相同的方式工作!
容器与虚拟机 (VM)
简单地说,VM 是一个完整的操作系统,包含自己的内核、硬件驱动程序、程序和应用。仅仅为了隔离一个应用而启动一个 VM 会产生很大的开销。
容器仅仅是一个隔离进程,包含其运行所需的所有文件。如果您运行多个容器,它们都共享同一个内核,这使得您可以在更少的基础设施上运行更多的应用。
同时使用虚拟机和容器
通常情况下,容器和 VM 会同时使用。例如,在云环境中,预置的机器通常是 VM。但是,虚拟机安装了容器运行时,就不必为每个应用预置一台机器,而是可以在一个 VM 上运行多个容器化应用,从而提高资源利用率并降低成本。
动手尝试
在此实践教程中,您将了解如何使用 Docker Desktop GUI 运行 Docker 容器。
使用以下说明运行容器。
打开 Docker Desktop 并选择顶部导航栏上的搜索 (Search)字段。
在搜索输入框中指定
welcome-to-docker
,然后选择拉取 (Pull)按钮。镜像成功拉取后,选择运行 (Run)按钮。
展开可选设置 (Optional settings)。
在容器名称 (Container name)中,指定
welcome-to-docker
。在主机端口 (Host port)中,指定
8080
。选择运行 (Run)以启动您的容器。
恭喜!您刚刚运行了您的第一个容器!🎉
查看您的容器
您可以通过前往 Docker Desktop 控制面板的容器 (Containers)视图来查看您的所有容器。


此容器运行一个 Web 服务器,用于显示一个简单的网站。处理更复杂的项目时,您将在不同的容器中运行不同的部分。例如,您可能为前端、后端和数据库运行不同的容器。
访问前端
启动容器时,您将容器的一个端口暴露到了您的机器上。可以将其视为创建配置,以便您通过容器的隔离环境进行连接。
对于此容器,可以通过端口 8080
访问前端。要打开网站,请在容器的端口 (Port(s))列中选择链接,或在浏览器中访问 http://localhost:8080。


探索您的容器
Docker Desktop 允许您探索容器的不同方面并与其进行交互。自己动手试试吧。
前往 Docker Desktop 控制面板中的容器 (Containers)视图。
选择您的容器。
选择文件 (Files)标签页以探索容器的隔离文件系统。
停止您的容器
docker/welcome-to-docker
容器将持续运行,直到您停止它。
前往 Docker Desktop 控制面板中的容器 (Containers)视图。
找到您想要停止的容器。
在操作 (Actions)列中选择停止 (Stop)操作。
按照说明使用 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
访问前端。要打开网站,请在容器的端口 (Port(s))列中选择链接,或在浏览器中访问 http://localhost: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 镜像了。