Docker 容器
Docker 容器是相应镜像的运行时实例。 PyCharm 使用 Docker 运行配置 来执行用于构建 Docker 镜像并运行容器的命令。
启用 Docker 插件
此功能依赖于 Docker 插件,该插件在 PyCharm 中已捆绑并默认启用。 如果相关功能不可用,请确认您未禁用该插件。
按下 Ctrl+Alt+S 打开设置,然后选择 。
打开 已安装 选项卡,找到 Docker 插件,然后选中其名称旁的复选框。
从现有镜像运行容器
您可以从任何本地现有的 Docker 镜像运行容器,该镜像可以是之前已 pulled 或 built 的镜像。
在 服务 工具窗口中,选择一个镜像并点击
,或者从上下文菜单中选择 创建容器。

在 创建容器 弹出窗口中,点击 创建…。
在打开的 创建Docker 配置 对话框中,您可以为该配置提供一个唯一名称,并为容器指定名称。 如果您将 容器名称 字段留空,Docker 将为其分配一个随机的唯一名称。

完成后,点击 运行 启动新配置。
这将创建并启动 Docker 镜像运行配置。
从 Dockerfile 运行容器
打开您要从中运行容器的 Dockerfile。
在装订区域点击
,并选择从此 Dockerfile 运行容器。

这将使用默认设置创建并启动 Dockerfile 运行配置 ,它会先根据 Dockerfile 构建镜像,然后基于该镜像运行容器。
要创建具有自定义设置的运行配置,在装订区域点击 ,然后选择 新建运行配置…。 您可以为构建的镜像指定自定义标签、容器名称,以及用于读取 Dockerfile 的上下文文件夹。 上下文文件夹在以下情况下很有用,例如,您的 Dockerfile 范围之外有一些希望添加到镜像文件系统中的制品。
与容器交互
创建的容器会列在 服务 工具窗口中。 默认情况下, 服务 工具窗口会显示所有容器,包括未运行的容器。 要在列表中隐藏已停止的容器,请在工具栏中点击 ,选择 Docker ,然后点击 已停止容器 以取消选中复选框。
选择容器后,您可以查看显示在创建并启动容器期间由相应的 Docker 运行配置 生成的部署日志的 构建日志 选项卡。

仪表板 选项卡提供有关该容器的重要信息。 除名称和哈希 ID 外,还会列出环境变量、端口和卷绑定。 您可以添加、编辑和移除环境变量、端口和卷绑定。 但是,这些更改要求您重新创建容器,并不会在用于创建此容器的 Docker 运行配置 中发生更改。 这意味着下次运行该配置时,这些更改不会持久化。

有关更多信息,请参阅 容器仪表板。
在正在运行的容器内执行命令
在 服务 工具窗口中,右键点击容器名称,然后点击 Exec。
在 在容器中运行命令 弹出窗口中,点击 创建并运行… 以创建并执行新命令。
或者,您可以选择之前运行过的命令之一。
在 Exec 对话框中,输入命令并点击 确定(O)。 例如:
ls /tmp列出 /tmp 目录中的内容
mkdir /tmp/my-new-dir在 /tmp 目录内创建 my-new-dir 目录
/bin/bash启动一个
bash会话
有关更多信息,请参阅 docker exec 命令参考。
查看正在运行容器的详细信息
在 服务 工具窗口中,右键点击容器名称,然后点击 检查。
输出在 检查 选项卡上以 JSON 对象形式呈现。

有关更多信息,请参阅 docker inspect 命令参考。
查看容器中正在运行的进程
在 服务 工具窗口中,右键点击容器名称,然后点击 显示进程。
输出在 进程 选项卡上以 JSON 数组形式呈现。
有关更多信息,请参阅 docker top 命令参考。
将控制台附加到容器输出
在 服务 工具窗口中,右键点击容器,然后点击 附加。
控制台附加到容器内运行的 ENTRYPOINT 进程的输出,并显示在 附加的控制台 选项卡上。
有关更多信息,请参阅 docker attach 命令参考。
浏览容器中的文件
在 服务 工具窗口中,右键点击容器,然后点击 显示文件。
PyCharm 执行 容器中的
ls命令,并打开带有容器文件系统的 文件 选项卡。
在 文件 选项卡上,您可以双击任何文件以在编辑器中查看。 PyCharm 以只读模式打开该文件,因此您无法编辑或删除它。
SELinux 上的绑定挂载
如果主机使用 SELinux ,安全模块可能会阻止在容器内运行的进程访问已挂载的文件和目录。 为避免这种情况,请使用 :z 选项为已挂载的文件和目录添加标签。 有关更多信息,请参阅 配置 SELinux 标签。
运行 Docker 容器时,PyCharm 可以自动为主机上的所有卷绑定添加 :z 标志,但顶级目录(例如 /bin )除外。
为绑定挂载应用 SELinux 标签
按下 Ctrl+Alt+S 打开设置,然后选择 。
选择 将:z 挂载选项应用于 SELinux 系统的几乎所有绑定卷。。
