Docker 容器
最后修改时间:2023 年 9 月 5 日Docker 容器是相应镜像的运行时实例。PyCharm 使用Docker 运行配置来执行构建 Docker 映像和运行容器的命令。
启用 Docker 插件
此功能依赖于Docker插件,该插件默认在 PyCharm 中捆绑并启用。如果相关功能不可用,请确保您没有禁用该插件。
笔记
默认情况下,Docker 插件仅在 PyCharm Professional 中可用。对于 PyCharm Community Edition,您需要按照安装插件中所述安装 Docker 插件。
按打开 IDE 设置,然后选择插件。CtrlAlt0S
打开“已安装”选项卡,找到Docker插件,然后选中插件名称旁边的复选框。
从现有镜像运行容器
您可以从之前拉取或构建的任何本地现有 Docker 映像运行容器。
在“服务”工具窗口中,选择一个图像,然后单击或从上下文菜单中选择“创建容器” 。
在“创建容器”弹出窗口中,单击“创建...”。
提示
如果您已有此映像的 Docker 运行配置,则“创建容器”弹出窗口还将包含该运行配置的名称作为选项。
在打开的“创建 Docker 配置”对话框中,您可以为配置提供唯一的名称并指定容器的名称。如果将容器名称字段留空,Docker 会为其指定一个随机的唯一名称。
完成后,单击“运行”以启动新配置。
这将创建并启动Docker 映像运行配置。
从 Dockerfile 运行容器
打开要从中运行容器的 Dockerfile。
单击装订线并选择从此 Dockerfile 运行容器。
这将使用默认设置创建并启动Dockerfile 运行配置,该配置首先基于 Dockerfile 构建镜像,然后基于该镜像运行容器。
要使用自定义设置创建运行配置,请单击装订线并选择新建运行配置...。您可以为构建的映像指定自定义标签、容器的名称以及从中读取 Dockerfile 的上下文文件夹。例如,如果您有一些超出 Dockerfile 范围的工件,并且您希望将其添加到映像的文件系统中,则上下文文件夹可能会很有用。
提示
您还可以右键单击项目工具窗口中的 Dockerfile以从中运行容器。
与容器交互
创建的容器列在“服务”工具窗口中。默认情况下,服务工具窗口显示所有容器,包括那些未运行的容器。要从列表中隐藏已停止的容器,请单击工具栏中的 ,选择Docker,然后单击已停止的容器以删除该复选框。
选择容器后,您可以查看“构建日志”选项卡,该选项卡显示创建和启动容器时相应Docker 运行配置生成的部署日志。
仪表板选项卡提供有关容器的重要信息。除了名称和哈希 ID 之外,它还列出了环境变量、端口和卷绑定。您可以添加、编辑和删除环境变量、端口和卷绑定。但是,这些更改要求您重新创建容器,并且不要更改用于创建此容器的Docker 运行配置。这意味着当您下次运行配置时,更改将不会保留。
有关更多信息,请参阅容器仪表板。
在服务工具窗口中,右键单击容器名称,然后单击Exec。
在“容器中的运行命令”弹出窗口中,单击“创建并运行...”以创建并执行新命令。
或者,您可以选择之前运行的命令之一。
在“执行”对话框中,键入命令并单击“确定”。例如:
ls /tmp
列出/tmp目录的内容
mkdir /tmp/my-new-dir
在/tmp目录中创建my-new-dir目录
/bin/bash
开始
bash
会话
有关更多信息,请参阅docker exec命令参考。
在“服务”工具窗口中,右键单击容器名称,然后单击“检查”。
输出在“检查”选项卡上呈现为 JSON 对象。
有关更多信息,请参阅docker inform命令参考。
在“服务”工具窗口中,右键单击容器名称,然后单击“显示进程”。
输出在“进程”选项卡上呈现为 JSON 数组。
有关更多信息,请参阅docker top命令参考。
在“服务”工具窗口中,右键单击容器,然后单击“附加”。
该控制台附加到在容器内运行的ENTRYPOINT进程的输出,并在“附加控制台”选项卡上呈现。
有关更多信息,请参阅docker Attach命令参考。
SELinux 上的绑定挂载
如果主机使用SELinux,安全模块可能会阻止容器内运行的进程访问已安装的文件和目录。为了避免这种情况,请使用选项标记已安装的文件和目录:z
。有关更多信息,请参阅配置 SELinux 标签。
运行 Docker 容器时,PyCharm 可以自动将该:z
标志添加到主机上除顶级目录(例如/bin )之外的所有卷绑定。
警告
这可能会在访问这些绑定安装的 Docker 容器范围之外产生安全后果。确保您了解后果。
为绑定挂载应用 SELinux 标签
按打开 IDE 设置,然后选择高级设置| Docker。CtrlAlt0S
选择将 :z 挂载选项应用到 SELinux 系统的几乎所有绑定卷。
感谢您的反馈意见!