SSH、Docker、流浪者

Docker使开发人员能够在容器内部署应用程序,以便在与生产环境相同的环境中测试代码。PyCharm 使用Docker 插件提供 Docker 支持。该插件在 PyCharm 专业版中默认捆绑并启用。对于 PyCharm 社区版,您需要按照安装插件中的说明安装 Docker插件

您可以在 Docker 容器中部署的各种配置环境中运行和调试 Python 代码。有关如何使用 Docker 配置 Python 解释器的更多详细信息,请参阅使用 Docker配置解释器。

启用 Docker 支持

  1. 安装并运行 Docker。

    有关更多信息,请参阅Docker 文档

  2. 确保您有稳定的 Internet 连接,以便 PyCharm 可以下载和运行busybox:latest. 成功配置 Docker 后,就可以下线了。

  3. 如果您使用 Docker for Windows,请通过 TCP 协议启用与 Docker 的连接:右键单击通知栏上的 Docker 图标通知栏上的 Docker 图标,从上下文菜单中选择设置,然后选择Expose daemon on tcp://localhost:2375 without系统 Docker 设置的General部分中的TLS复选框。

  4. 配置 Docker 守护程序连接设置:

    • Ctrl+Alt+S打开 IDE 设置并选择Build、Execution、Deployment | Docker

    • 单击添加按钮以添加 Docker 配置并指定如何连接到 Docker 守护程序。

      连接设置取决于您的 Docker 版本和操作系统。有关更多信息,请参阅Docker 配置

      连接成功消息应出现在对话框底部。

      Docker 连接设置
  5. 连接到 Docker 守护程序。

    配置的 Docker 连接应出现在服务工具窗口中(查看 | 工具窗口 | 服务Alt+8)。选择 Docker 节点Docker节点并单击连接按钮,或从上下文菜单中选择连接。

    服务工具窗口,连接到 Docker

    要编辑 Docker 连接设置,请选择 Docker 节点并单击编辑配置按钮工具栏上的 ,或从上下文菜单中选择编辑配置。

Services工具窗口(View | Tool Windows | Services or Alt+8)中,您可以拉取和推送镜像、创建和运行容器、管理 Docker Compose 服务等。与其他工具窗口一样,您可以开始输入图像或容器的名称以突出显示匹配的项目。

在“服务”工具窗口中搜索 docker 图像

管理图像

Docker 镜像是运行容器的可执行包。根据您的开发需求,您可以将 Docker 用于以下用途:

图像通过 Docker 注册表分发。Docker Hub是默认的公共注册表,包含所有最常见的镜像:各种 Linux 风格、数据库管理系统、Web 服务器、运行时环境等。还有其他公共和私有 Docker 注册表,您也可以部署自己的注册表服务器。

配置 Docker 注册表

  1. Ctrl+Alt+S打开 IDE 设置并选择Build、Execution、Deployment | Docker | 注册表

  2. 单击添加按钮以添加 Docker 注册表配置并指定如何连接到注册表。如果您指定凭据,PyCharm 将自动检查与注册表的连接。连接成功消息应出现在对话框底部。

    Docker 注册表对话框

从 Docker 注册表中提取图像

  1. 服务工具窗口中,选择图像节点。

  2. 选择Docker 注册表并指定存储库和标记(映像的名称和版本,例如tomcat:latest.

    拉图像对话框
  3. Ctrl+Enter运行docker pull

从 Dockerfile 构建镜像

当您编辑 Dockerfile 时,PyCharm 为已配置注册表中的图像提供全。您还可以按住并单击图像名称以在 Web 浏览器中打开其页面。Ctrl

  1. 打开要从中构建映像的Dockerfile 。

  2. 单击在 Docker 上运行装订线并选择构建图像。

    Docker 上的构建映像弹出窗口

PyCharm 运行docker build命令。

将图像推送到 Docker 注册表

  1. 服务工具窗口中,选择要上传的图像,然后从上下文菜单中单击推送图像按钮或选择推送图像。

  2. 选择Docker 注册表并指定存储库和标记(映像的名称和版本,例如my-app:v2)。

    推送图像上下文菜单
  3. 单击确定运行docker push命令。

PyCharm 存储您在本地提取或构建的图像,并在图像下的服务工具窗口中列出它们。当您选择图像时,您可以通过单击“属性”选项卡查看其 ID 或将其复制到剪贴板。复制到剪贴板按钮

Docker 映像属性

要显示有关图像的详细信息,请右键单击它并从上下文菜单中选择检查。PyCharm 运行docker image inspect命令并将输出打印到检查选项卡。

Docker 映像检查选项卡

没有标签的图像<none>:<none>可以是以下之一:

  • 中间图像作为其他图像的层,不占用任何空间

  • 当您基于另一个图像的较新版本重建一个图像时,仍然存在的悬空图像。您应该定期修剪悬空图像以节省磁盘空间。

要从列表中隐藏未标记的图像,请单击过滤器菜单Docker 工具栏,然后单击未标记的图像以删除复选标记。

要删除一张或多张图像,请在列表中选择它们并单击删除图像按钮

运行容器

Docker 容器是相应镜像的运行时实例。PyCharm 使用运行配置来执行构建 Docker 镜像和运行容器的命令。Docker 运行配置分为三种类型:

从现有图像运行容器

  1. 服务工具窗口中,选择一个图像,然后从上下文菜单中单击创建容器按钮或选择创建容器。

    创建容器上下文菜单项
  2. 创建容器弹出窗口中,单击创建

  3. 在打开的创建 Docker 配置对话框中,您可以为配置提供唯一名称并为容器指定名称。如果您将Container name字段留空,Docker 会给它一个随机的唯一名称。

    创建 Docker 配置对话框
  4. 完成后,单击运行以启动新配置。

从 Dockerfile 运行容器

  1. 打开要从中运行容器的 Dockerfile。

  2. 单击在 Docker 上运行装订线并选择从该 Dockerfile 运行容器。

    在 Docker 上运行弹出窗口

这将使用默认设置创建并启动一个运行配置,该配置基于 Dockerfile 构建一个镜像,然后基于该镜像运行一个容器。

要使用自定义设置创建运行配置,请单击在 Docker 上运行装订线并选择New Run Configuration。您可以为构建的镜像指定一个自定义标签,以及容器的名称,以及从中读取 Dockerfile 的上下文文件夹。上下文文件夹可能很有用,例如,如果您有一些超出 Dockerfile 范围的工件,您希望将其添加到映像的文件系统中。

Docker 运行配置

创建 Docker 运行配置

  1. 从主菜单中,选择运行 | 编辑配置

  2. Run/Debug Configurations对话框中,单击添加新配置按钮,指向Docker,然后单击所需的运行配置类型。

使用这种类型的配置从您之前提取或构建的本地现有映像运行 Docker 容器。

Docker 使用docker run命令,语法如下:

docker run [选项] 图像 [命令] [ARG...]

您可以使用Docker Image运行配置的选项设置此命令的所有参数。

默认情况下,Docker Image配置有以下选项:

姓名

为运行配置指定一个名称,以便在编辑或运行时快速识别它。

允许并行运行

允许并行运行此运行配置的多个实例。

默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。

存储为项目文件

使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。

默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。

服务器

选择要用于运行配置的Docker 守护程序连接。

图像 ID 或名称

指定要从中创建容器的 Docker 映像的标识符或名称。

容器名称

指定容器的可选名称。如果为空,Docker 将为容器生成一个随机名称。

这类似于将--name选项与docker run命令一起使用。

发射前

指定在开始运行配置之前要执行的任务列表。例如,编译一些代码并构建必要的工件,运行一些外部工具或 Web 浏览器,等等。

单击添加按钮或按下Alt+Insert以添加可用任务之一。

使用向上按钮和移动列表中的任务向下按钮以更改执行任务的顺序。

选择一个任务并单击编辑按钮以编辑该任务。单击删除按钮以从列表中删除选定的任务。

显示此页面

在实际启动之前显示运行配置设置。

激活工具窗口

启动此运行配置时打开服务工具窗口。禁用时,您可以手动打开工具窗口以查看正在运行的容器:查看 | 工具窗口 | 服务Alt+8.

使用修改选项菜单将高级选项添加到运行配置:

随机发布所有暴露的端口

将所有暴露的容器端口发布到主机上的随机空闲端口。

这类似于在命令行中使用-Por选项。--publish-all

绑定端口

将特定容器端口映射到主机上的特定端口。

这类似于在命令行中使用-por选项。--publish

单击绑定端口浏览字段并指定主机上的哪些端口应映射到容器中的哪些端口。您还可以提供一个特定的主机 IP,从该主机 IP 可以访问该端口(例如,您可以将其设置为仅在本地访问,或将其设置为为网络中的所有计算机打开它)。127.0.0.10.0.0.0

假设您已经在主机端口 5432 上运行 Django,并且您想在容器中运行另一个 Django 实例并通过端口 5433 从主机访问它。将主机端口 5433 绑定到容器中的端口 5432 类似于设置以下命令行选项:

-p 5433:5432

您可以在运行选项字段中明确设置此选项,而不是配置绑定端口字段。

入口点

覆盖ENTRYPOINT图像的默认值。

这类似于--entrypoint在命令行上使用该选项。

命令

覆盖CMD图像的默认值。

这类似于将命令添加为docker run.

绑定坐骑

将主机上的文件和目录挂载到容器中的特定位置。

这类似于在命令行中使用-vor选项。--volume

单击Bind mounts字段并指定主机目录和容器中应挂载的相应路径浏览。如果要禁用对容器卷的写入,请选择只读。

例如,您可以将主机上的本地 Django 目录(Users/Shared/django-data)挂载到容器内的某个目录(/​​var/lib/django-data)。以这种方式挂载卷类似于设置以下命令行选项:

-v 用户/共享/django-data:/var/lib/django-data

您可以在Run options字段中明确设置此选项,而不是配置Bind mounts字段。

环境变量

指定环境变量。根据DockerfileENV中的指令定义,存在与您正在使用的基本映像相关联的环境变量。Docker还会为每个新容器自动设置环境变量。使用此字段覆盖任何变量或指定其他变量。

这类似于在命令行中使用-eor选项。--env

单击环境变量浏览字段以添加变量的名称和值。

例如,如果您想默认使用特定用户名(而不是运行应用程序的用户的操作系统名称)连接到 Django,您可以将该DJANGO_USER变量设置为必要的值。这类似于设置以下命令行选项:

--env DJANGO_USER=%env-var-value

您可以在运行选项字段中显式设置此选项,而不是配置环境变量字段。

运行选项

设置任何其他支持的 docker run选项。

例如,要将容器连接到my-net网络并为其设置my-app别名,请指定以下内容:

--network my-net --network-alias my-app

附加到容器

附加到容器的标准输入、输出和错误流。

这类似于在命令行中使用-aor选项。--attach

显示命令预览

预览将用于执行运行配置的生成命令。

使用这种类型的配置从 Dockerfile 构建一个镜像,然后从这个镜像派生一个容器。

Docker 使用docker build命令从 Dockerfile 构建映像,然后使用 docker run命令从它启动容器。

默认情况下,Dockerfile配置具有以下选项:

姓名

为运行配置指定一个名称,以便在编辑或运行时快速识别它。

允许并行运行

允许并行运行此运行配置的多个实例。

默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。

存储为项目文件

使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。

默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。

服务器

选择要用于运行配置的Docker 守护程序连接。

Dockerfile

指定用于构建映像的 Dockerfile 的名称和位置。

图片标签

为构建的图像指定一个可选的名称和标签。

这有助于将来参考图像。如果您将该字段留空,则图像将只有一个随机的唯一标识符。

容器名称

指定容器的可选名称。如果为空,Docker 将为容器生成一个随机名称。

这类似于将--name选项与docker run命令一起使用。

发射前

指定在开始运行配置之前要执行的任务列表。例如,编译一些代码并构建必要的工件,运行一些外部工具或 Web 浏览器,等等。

单击添加按钮或按下Alt+Insert以添加可用任务之一。

使用向上按钮和移动列表中的任务向下按钮以更改执行任务的顺序。

选择一个任务并单击编辑按钮以编辑该任务。单击删除按钮以从列表中删除选定的任务。

显示此页面

在实际启动之前显示运行配置设置。

激活工具窗口

启动此运行配置时打开服务工具窗口。禁用时,您可以手动打开工具窗口以查看正在运行的容器:查看 | 工具窗口 | 服务Alt+8.

使用修改选项菜单将高级选项添加到运行配置:

上下文文件夹

指定守护程序将在构建过程中使用的本地目录。Dockerfile 中的所有主机路径都将相对于该目录进行处理。默认情况下,如果将其留空,Docker 将使用 Dockerfile 所在的同一目录。

构建参数

指定构建时变量的值,该变量可以在构建过程中像常规环境变量一样访问,但不会保留在中间或最终映像中。

这类似于将--build-args选项与docker build命令一起使用。

这些变量必须在 Dockerfile 中与ARG指令一起定义。例如,您可以为要使用的基本映像的版本定义一个变量:

ARG PYTAG=最新的来自 python:$PYTAG

在这种情况下,该PYTAG变量将默认为latest并且 Dockerfile 将使用最新可用的 Python 版本生成一个映像,除非您将其重新定义为构建时参数。如果您设置 , PYTAG=3.7Docker 将python:3.7改为拉取,这将运行 Python 版本 3.7 的容器。

重新定义PYTAG参数类似于设置以下命令行选项:

--build-arg PYTAG=3.7

构建选项

设置任何其他支持docker build的选项。

例如,您可以使用该--label选项为构建的图像指定元数据。

启用 BuildKit(实验性)

构建图像时使用BuildKit 后端。

这类似于在调用命令DOCKER_BUILDKIT=1时设置环境变量。docker build

随机发布所有暴露的端口

将所有暴露的容器端口发布到主机上的随机空闲端口。

这类似于在命令行中使用-Por选项。--publish-all

绑定端口

将特定容器端口映射到主机上的特定端口。

这类似于在命令行中使用-por选项。--publish

单击绑定端口浏览字段并指定主机上的哪些端口应映射到容器中的哪些端口。您还可以提供一个特定的主机 IP,从该主机 IP 可以访问该端口(例如,您可以将其设置为仅在本地访问,或将其设置为为网络中的所有计算机打开它)。127.0.0.10.0.0.0

假设您已经在主机端口 5432 上运行 Django,并且您想在容器中运行另一个 Django 实例并通过端口 5433 从主机访问它。将主机端口 5433 绑定到容器中的端口 5432 类似于设置以下命令行选项:

-p 5433:5432

您可以在运行选项字段中明确设置此选项,而不是配置绑定端口字段。

入口点

覆盖ENTRYPOINT图像的默认值。

这类似于--entrypoint在命令行上使用该选项。

命令

覆盖CMD图像的默认值。

这类似于将命令添加为docker run.

绑定坐骑

将主机上的文件和目录挂载到容器中的特定位置。

这类似于在命令行中使用-vor选项。--volume

单击Bind mounts字段并指定主机目录和容器中应挂载的相应路径浏览。如果要禁用对容器卷的写入,请选择只读。

例如,您可以将主机上的本地 Django 目录(Users/Shared/django-data)挂载到容器内的某个目录(/​​var/lib/django-data)。以这种方式挂载卷类似于设置以下命令行选项:

-v 用户/共享/django-data:/var/lib/django-data

您可以在Run options字段中明确设置此选项,而不是配置Bind mounts字段。

环境变量

指定环境变量。根据DockerfileENV中的指令定义,存在与您正在使用的基本映像相关联的环境变量。Docker还会为每个新容器自动设置环境变量。使用此字段覆盖任何变量或指定其他变量。

这类似于在命令行中使用-eor选项。--env

单击环境变量浏览字段以添加变量的名称和值。

例如,如果您想默认使用特定用户名(而不是运行应用程序的用户的操作系统名称)连接到 Django,您可以将该DJANGO_USER变量设置为必要的值。这类似于设置以下命令行选项:

--env DJANGO_USER=%env-var-value

您可以在运行选项字段中显式设置此选项,而不是配置环境变量字段。

运行选项

设置任何其他支持的 docker run选项。

例如,要将容器连接到my-net网络并为其设置my-app别名,请指定以下内容:

--network my-net --network-alias my-app

附加到容器

附加到容器的标准输入、输出和错误流。

这类似于在命令行中使用-aor选项。--attach

显示命令预览

预览将用于执行运行配置的生成命令。

使用这种类型的配置来运行多容器 Docker 应用程序。

Docker 使用docker-compose命令来定义、配置和运行多容器应用程序。构建、创建、启动和附加到容器的主要命令是docker-compose up

默认情况下, Docker-compose配置具有以下选项:

姓名

为运行配置指定一个名称,以便在编辑或运行时快速识别它。

允许并行运行

允许并行运行此运行配置的多个实例。

默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。

存储为项目文件

使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。

默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。

服务器

选择要用于运行配置的Docker 守护程序连接。

编写文件

指定定义必要服务的撰写文件。Docker Compose 以指定的顺序构建配置,因此任何后续文件都会覆盖并添加到先前文件中相同服务的字段。

这类似于将-f选项与docker-compose命令一起使用。

服务

指定要构建、创建和启动的服务。

单击浏览图标 (