Docker使开发人员能够在容器内部署应用程序,以便在与生产环境相同的环境中测试代码。PyCharm 使用Docker 插件提供 Docker 支持。该插件在 PyCharm 专业版中默认捆绑并启用。对于 PyCharm 社区版,您需要按照安装插件中的说明安装 Docker插件。
您可以在 Docker 容器中部署的各种配置环境中运行和调试 Python 代码。有关如何使用 Docker 配置 Python 解释器的更多详细信息,请参阅使用 Docker配置解释器。
安装并运行 Docker。
有关更多信息,请参阅Docker 文档。
确保您有稳定的 Internet 连接,以便 PyCharm 可以下载和运行busybox:latest
. 成功配置 Docker 后,就可以下线了。
如果您使用 Docker for Windows,请通过 TCP 协议启用与 Docker 的连接:右键单击通知栏上的 Docker 图标,从上下文菜单中选择设置,然后选择Expose daemon on tcp://localhost:2375 without系统 Docker 设置的General部分中的TLS复选框。
配置 Docker 守护程序连接设置:
按Ctrl+Alt+S打开 IDE 设置并选择Build、Execution、Deployment | Docker。
单击以添加 Docker 配置并指定如何连接到 Docker 守护程序。
连接设置取决于您的 Docker 版本和操作系统。有关更多信息,请参阅Docker 配置。
连接成功消息应出现在对话框底部。
连接到 Docker 守护程序。
配置的 Docker 连接应出现在服务工具窗口中( 或Alt+8)。选择 Docker 节点并单击
,或从上下文菜单中选择连接。
要编辑 Docker 连接设置,请选择 Docker 节点并单击工具栏上的 ,或从上下文菜单中选择编辑配置。
在Services工具窗口( or Alt+8)中,您可以拉取和推送镜像、创建和运行容器、管理 Docker Compose 服务等。与其他工具窗口一样,您可以开始输入图像或容器的名称以突出显示匹配的项目。
Docker 镜像是运行容器的可执行包。根据您的开发需求,您可以将 Docker 用于以下用途:
例如,您可以拉取一个运行 Django 服务器容器的镜像来测试您的应用程序将如何与您的生产环境进行交互。
例如,您可以构建一个运行具有特定 Python 版本的容器的映像,以在其中执行您的应用程序。
例如,如果您想向某人演示您的应用程序如何在某些特定版本的 JRE 中运行,而不是设置适当的环境,他们可以从您的映像运行容器。
图像通过 Docker 注册表分发。Docker Hub是默认的公共注册表,包含所有最常见的镜像:各种 Linux 风格、数据库管理系统、Web 服务器、运行时环境等。还有其他公共和私有 Docker 注册表,您也可以部署自己的注册表服务器。
按Ctrl+Alt+S打开 IDE 设置并选择Build、Execution、Deployment | Docker | 注册表。
单击以添加 Docker 注册表配置并指定如何连接到注册表。如果您指定凭据,PyCharm 将自动检查与注册表的连接。连接成功消息应出现在对话框底部。
在服务工具窗口中,选择图像节点。
选择Docker 注册表并指定存储库和标记(映像的名称和版本,例如tomcat:latest
.
按Ctrl+Enter运行docker pull。
当您编辑 Dockerfile 时,PyCharm 为已配置注册表中的图像提供补全。您还可以按住并单击图像名称以在 Web 浏览器中打开其页面。Ctrl
打开要从中构建映像的Dockerfile 。
单击装订线并选择构建图像。
PyCharm 运行docker build命令。
在服务工具窗口中,选择要上传的图像,然后从上下文菜单中单击或选择推送图像。
选择Docker 注册表并指定存储库和标记(映像的名称和版本,例如my-app:v2
)。
单击确定运行docker push命令。
PyCharm 存储您在本地提取或构建的图像,并在图像下的服务工具窗口中列出它们。当您选择图像时,您可以通过单击“属性”选项卡查看其 ID 或将其复制到剪贴板。
要显示有关图像的详细信息,请右键单击它并从上下文菜单中选择检查。PyCharm 运行docker image inspect命令并将输出打印到检查选项卡。
没有标签的图像<none>:<none>
可以是以下之一:
中间图像作为其他图像的层,不占用任何空间
当您基于另一个图像的较新版本重建一个图像时,仍然存在的悬空图像。您应该定期修剪悬空图像以节省磁盘空间。
要从列表中隐藏未标记的图像,请单击Docker 工具栏,然后单击未标记的图像以删除复选标记。
要删除一张或多张图像,请在列表中选择它们并单击。
Docker 容器是相应镜像的运行时实例。PyCharm 使用运行配置来执行构建 Docker 镜像和运行容器的命令。Docker 运行配置分为三种类型:
Dockerfile:当您从 Dockerfile 运行容器时自动创建。此配置从 Dockerfile 构建一个映像,然后从该映像派生一个容器。
Docker-compose:当您从Docker Compose 文件运行多容器 Docker 应用程序时自动创建。
在服务工具窗口中,选择一个图像,然后从上下文菜单中单击或选择创建容器。
在创建容器弹出窗口中,单击创建。
在打开的创建 Docker 配置对话框中,您可以为配置提供唯一名称并为容器指定名称。如果您将Container name字段留空,Docker 会给它一个随机的唯一名称。
完成后,单击运行以启动新配置。
打开要从中运行容器的 Dockerfile。
单击装订线并选择从该 Dockerfile 运行容器。
这将使用默认设置创建并启动一个运行配置,该配置基于 Dockerfile 构建一个镜像,然后基于该镜像运行一个容器。
要使用自定义设置创建运行配置,请单击装订线并选择New Run Configuration。您可以为构建的镜像指定一个自定义标签,以及容器的名称,以及从中读取 Dockerfile 的上下文文件夹。上下文文件夹可能很有用,例如,如果您有一些超出 Dockerfile 范围的工件,您希望将其添加到映像的文件系统中。
从主菜单中,选择
。在Run/Debug Configurations对话框中,单击,指向Docker,然后单击所需的运行配置类型。
使用这种类型的配置从您之前提取或构建的本地现有映像运行 Docker 容器。
Docker 使用docker run命令,语法如下:
您可以使用Docker Image运行配置的选项设置此命令的所有参数。
默认情况下,Docker Image配置有以下选项:
姓名 | 为运行配置指定一个名称,以便在编辑或运行时快速识别它。 |
允许并行运行 | 允许并行运行此运行配置的多个实例。 默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。 |
存储为项目文件 | 使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。 默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。 |
服务器 | 选择要用于运行配置的Docker 守护程序连接。 |
图像 ID 或名称 | 指定要从中创建容器的 Docker 映像的标识符或名称。 |
容器名称 | 指定容器的可选名称。如果为空,Docker 将为容器生成一个随机名称。 这类似于将 |
发射前 | 指定在开始运行配置之前要执行的任务列表。例如,编译一些代码并构建必要的工件,运行一些外部工具或 Web 浏览器,等等。 单击 使用 选择一个任务并单击 |
显示此页面 | 在实际启动之前显示运行配置设置。 |
激活工具窗口 | 启动此运行配置时打开服务工具窗口。禁用时,您可以手动打开工具窗口以查看正在运行的容器: 或Alt+8. |
使用修改选项菜单将高级选项添加到运行配置:
随机发布所有暴露的端口 | 将所有暴露的容器端口发布到主机上的随机空闲端口。 这类似于在命令行中使用 |
绑定端口 | 将特定容器端口映射到主机上的特定端口。 这类似于在命令行中使用 单击绑定端口 假设您已经在主机端口 5432 上运行 Django,并且您想在容器中运行另一个 Django 实例并通过端口 5433 从主机访问它。将主机端口 5433 绑定到容器中的端口 5432 类似于设置以下命令行选项: -p 5433:5432 您可以在运行选项字段中明确设置此选项,而不是配置绑定端口字段。 |
入口点 | 覆盖 这类似于 |
命令 | 覆盖 这类似于将命令添加为 |
绑定坐骑 | 将主机上的文件和目录挂载到容器中的特定位置。 这类似于在命令行中使用 单击Bind mounts字段并指定主机目录和容器中应挂载的相应路径 例如,您可以将主机上的本地 Django 目录(Users/Shared/django-data)挂载到容器内的某个目录(/var/lib/django-data)。以这种方式挂载卷类似于设置以下命令行选项: -v 用户/共享/django-data:/var/lib/django-data 您可以在Run options字段中明确设置此选项,而不是配置Bind mounts字段。 |
环境变量 | 指定环境变量。根据Dockerfile 这类似于在命令行中使用 单击环境变量 例如,如果您想默认使用特定用户名(而不是运行应用程序的用户的操作系统名称)连接到 Django,您可以将该 --env DJANGO_USER=%env-var-value 您可以在运行选项字段中显式设置此选项,而不是配置环境变量字段。 |
运行选项 | 设置任何其他支持的 docker run选项。 例如,要将容器连接到 --network my-net --network-alias my-app |
附加到容器 | 附加到容器的标准输入、输出和错误流。 这类似于在命令行中使用 |
显示命令预览 | 预览将用于执行运行配置的生成命令。 |
使用这种类型的配置从 Dockerfile 构建一个镜像,然后从这个镜像派生一个容器。
Docker 使用docker build命令从 Dockerfile 构建映像,然后使用 docker run命令从它启动容器。
默认情况下,Dockerfile配置具有以下选项:
姓名 | 为运行配置指定一个名称,以便在编辑或运行时快速识别它。 |
允许并行运行 | 允许并行运行此运行配置的多个实例。 默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。 |
存储为项目文件 | 使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。 默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。 |
服务器 | 选择要用于运行配置的Docker 守护程序连接。 |
Dockerfile | 指定用于构建映像的 Dockerfile 的名称和位置。 |
图片标签 | 为构建的图像指定一个可选的名称和标签。 这有助于将来参考图像。如果您将该字段留空,则图像将只有一个随机的唯一标识符。 |
容器名称 | 指定容器的可选名称。如果为空,Docker 将为容器生成一个随机名称。 这类似于将 |
发射前 | 指定在开始运行配置之前要执行的任务列表。例如,编译一些代码并构建必要的工件,运行一些外部工具或 Web 浏览器,等等。 单击 使用 选择一个任务并单击 |
显示此页面 | 在实际启动之前显示运行配置设置。 |
激活工具窗口 | 启动此运行配置时打开服务工具窗口。禁用时,您可以手动打开工具窗口以查看正在运行的容器: 或Alt+8. |
使用修改选项菜单将高级选项添加到运行配置:
上下文文件夹 | 指定守护程序将在构建过程中使用的本地目录。Dockerfile 中的所有主机路径都将相对于该目录进行处理。默认情况下,如果将其留空,Docker 将使用 Dockerfile 所在的同一目录。 |
构建参数 | 指定构建时变量的值,该变量可以在构建过程中像常规环境变量一样访问,但不会保留在中间或最终映像中。 这类似于将 这些变量必须在 Dockerfile 中与
ARG PYTAG=最新的来自 python:$PYTAG
在这种情况下,该 重新定义 --build-arg PYTAG=3.7 |
构建选项 | 设置任何其他支持 例如,您可以使用该 |
启用 BuildKit(实验性) | 构建图像时使用BuildKit 后端。 这类似于在调用命令 |
随机发布所有暴露的端口 | 将所有暴露的容器端口发布到主机上的随机空闲端口。 这类似于在命令行中使用 |
绑定端口 | 将特定容器端口映射到主机上的特定端口。 这类似于在命令行中使用 单击绑定端口 假设您已经在主机端口 5432 上运行 Django,并且您想在容器中运行另一个 Django 实例并通过端口 5433 从主机访问它。将主机端口 5433 绑定到容器中的端口 5432 类似于设置以下命令行选项: -p 5433:5432 您可以在运行选项字段中明确设置此选项,而不是配置绑定端口字段。 |
入口点 | 覆盖 这类似于 |
命令 | 覆盖 这类似于将命令添加为 |
绑定坐骑 | 将主机上的文件和目录挂载到容器中的特定位置。 这类似于在命令行中使用 单击Bind mounts字段并指定主机目录和容器中应挂载的相应路径 例如,您可以将主机上的本地 Django 目录(Users/Shared/django-data)挂载到容器内的某个目录(/var/lib/django-data)。以这种方式挂载卷类似于设置以下命令行选项: -v 用户/共享/django-data:/var/lib/django-data 您可以在Run options字段中明确设置此选项,而不是配置Bind mounts字段。 |
环境变量 | 指定环境变量。根据Dockerfile 这类似于在命令行中使用 单击环境变量 例如,如果您想默认使用特定用户名(而不是运行应用程序的用户的操作系统名称)连接到 Django,您可以将该 --env DJANGO_USER=%env-var-value 您可以在运行选项字段中显式设置此选项,而不是配置环境变量字段。 |
运行选项 | 设置任何其他支持的 docker run选项。 例如,要将容器连接到 --network my-net --network-alias my-app |
附加到容器 | 附加到容器的标准输入、输出和错误流。 这类似于在命令行中使用 |
显示命令预览 | 预览将用于执行运行配置的生成命令。 |
使用这种类型的配置来运行多容器 Docker 应用程序。
Docker 使用docker-compose命令来定义、配置和运行多容器应用程序。构建、创建、启动和附加到容器的主要命令是docker-compose up。
默认情况下, Docker-compose配置具有以下选项:
姓名 | 为运行配置指定一个名称,以便在编辑或运行时快速识别它。 |
允许并行运行 | 允许并行运行此运行配置的多个实例。 默认情况下,它是禁用的,当您在另一个实例仍在运行时启动此配置时,PyCharm 建议停止正在运行的实例并启动另一个实例。当运行配置消耗大量资源并且没有充分理由运行多个实例时,这很有帮助。 |
存储为项目文件 | 使用运行配置设置保存文件以与其他团队成员共享。默认位置是.idea/runConfigurations。但是,如果您不想共享.idea目录,您可以将配置保存到项目中的任何其他目录。 默认情况下,它被禁用,并且 PyCharm 将运行配置设置存储在.idea/workspace.xml中。 |
服务器 | 选择要用于运行配置的Docker 守护程序连接。 |
编写文件 | 指定定义必要服务的撰写文件。Docker Compose 以指定的顺序构建配置,因此任何后续文件都会覆盖并添加到先前文件中相同服务的字段。 这类似于将 |
服务 | 指定要构建、创建和启动的服务。 单击浏览图标 ( |