Please enable Javascript to view the contents

IntelliJ IDEA中配置和使用Docker

 ·  ☕ 5 分钟

Docker允许开发人员在容器中部署应用程序,以便在与生产环境相同的环境中测试代码。IntelliJ IDEA使用Docker插件提供Docker支持。在IntelliJ IDEA Ultimate版本中,该插件默认情况下是捆绑安装并被启用的。对于IntelliJ IDEA社区版,您需要安装Docker插件。

启用 Docker 支持

步骤如下:

  • 本地安装 Docker

  • 连接Docker守护进程的 配置(下文重点介绍)

  • 连接Docker守护进程 (正式连接):点击底部的 Services 工具窗口 或 在主菜单中选择 View | Tool Windows | Services ,然后选择 Docker ,点击 运行按钮即可连接 Docker守护进程。

    dockerconnected

  • 连接之后,在 Services 工具窗口,中可以方便的完成(点击图标和鼠标右键): 管理镜像、运行容器、监视容器、Docker Compose、Docker Debug等操作。

连接Docker守护进程的配置 :

在 “设置/首选项” 对话框 (Ctrl + Alt + S)中,选择 Build, Execution, Deployment | Docker 点击 ➕,添加 Docker 配置,在此配置如何连接到 Docker 守护进程。

Docker 配置

连接设置取决于Docker版本和操作系统:

  • Docker for Mac:如果你本地安装了 Docker for macOS,则推荐此连接选项。

  • Unix socket: 如果你使用 Linux 系统,并在本地安装了 Docker,则推荐此连接选项。

    如果出现权限被拒绝错误,请将当前用户添加到计算机上的 docker 组,然后注销,重新登录。

  • Docker Machine:如果您使用的是Docker Toolbox for Windows,建议使用此选项连接Docker API。

  • TCP socket: 如果你使用的是Docker for Windows,则这是常用的连接选项。此选项也适用于Linux、Docker for macOS和Docker Toolbox。如果你本地并未安装任何 Docker 程序也可以使用此选项来连接远程主机上的 Docker 守护进程 (见下文,但是某些操作是不支持的)。

    • Engine API URL:取决于Docker版本和操作系统:
      • Docker for Windows: tcp://localhost:2375 。注意:需要事先在Docker设置的 General 部分,启用 Expose daemon on tcp://localhost:2375 without TLS 选项(其作用是:将docker与本地的连接设置为不需要TLS加密)。
      • Docker for macOS 或 Linux: unix:///var/run/docker.sock
      • Docker Toolbox for Windows 或 macOS: https://192.168.99.100:2376
    • Certificates folder : 证书文件夹的路径 (一般留空)。取决于你的Docker版本和操作系统:
      • Docker for Windows, macOS 或 Linux: 留空即可
      • Docker Toolbox for Windows: %HOMEPATH%\.docker\machine\machines\default

配置 Path mappings (路径映射) :

对于Windows和macOS:指定可以在主机和容器之间共享的文件夹的映射。

  • Local path: 用于(volume binding)卷绑定的本地文件夹的路径。
  • Virtual machine path: Docker虚拟机文件系统中的相应目录路径。

Idea 连接 CentOS7虚拟机中的Docker

需要修改 Docker 配置文件让其开放 Docker Remote API (docker REST API)

查看配置文件位于哪里:

1
2
3
4
[root@localhost ~]# systemctl show --property=FragmentPath docker
FragmentPath=/usr/lib/systemd/system/docker.service
[root@localhost ~]# whereis dockerd
dockerd: /usr/bin/dockerd /usr/share/man/man8/dockerd.8.gz

编辑该文件:

1
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service

在该行添加如下内容:(这里端口为2375,所以后面在idea中连接时也要填写该端口)

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

重新加载配置文件:

1
[root@localhost ~]# systemctl daemon-reload

重启docker:

1
[root@localhost ~]# systemctl restart docker

测试:

curl localhost:2375/info

我的本地虚拟机中是:

192.168.25.129:2375

管理镜像

配置 Docker registry :

  • 如果只使用Docker Hub,则不需要配置 Docker registry。

  • 在"设置/首选项"对话框Ctrl + Alt + S中,选择 Build, Execution, Deployment | Docker | Registry.

  • 点击 ➕ 进行添加

从 Dockerfile 构建 Image:

  • 打开该 Dockerfile

  • 单击左侧装订线中的 运行图标(绿色三角形) ,在弹出的菜单中选择 build the image on Docker。

    dockerfilebuild

  • IntelliJ IDEA将会运行docker build命令。

运行容器

IntelliJ IDEA使用运行配置( Run | Edit Configurations )来运行Docker容器。 Docker运行配置共有三种类型:

  • Docker Image
  • Dockerfile
  • Docker-compose

从Image中运行容器:

  • 从Services 工具窗口中,右键该 image ,选择 create container
  • 将会打开 Create Docker Configuration 对话框,然后在此对话框中配置 docker run 命令。
    create Docker configuration.png

上图中我希望最终拼凑成如下命令:

1
docker run --name mysql-latest -p 3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pwd -d mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

那么需要将 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 填写在 Command 表单中,它们两个将作为参数传递给 image 中的 CMD使用。

从Dockerfile运行容器:

  • 打开该 Dockerfile
  • 单击左侧装订线中的 运行图标(绿色三角形) ,在弹出的菜单中选择 Run on Docker。(不推荐,请继续看)
  • 重点: 要使用自定义的运行配置,在上面弹出的菜单中选择 New Run Configuration 。 在这里您可以为构建的映像指定自定义标签,为容器指定名称,Dockerfile的上下文文件夹,绑定数据卷、绑定端口、配置环境变量等各种选项。

您可以在"Project"工具窗口中右键单击该 Dockerfile 以执行以下有用操作:

  • 从Dockerfile运行容器
  • 保存Dockerfile的运行配置
  • 选择此Dockerfile的运行配置以将其激活

Docker Compose

Docker Compose用于运行多容器应用程序。 例如,您可以将Web服务器,后端数据库和应用程序代码作为单独的服务运行。 如有必要,可以通过添加更多容器来扩展每个服务。 这使您可以在类似于生产的动态环境中执行有效的开发和测试。

从Docker Compose运行多容器:

  • 创建Docker Compose文件
  • 从主菜单中选择,Run | Edit Configurations
  • 点击➕,选择 Docker ,选择 Docker-compose
  • 指定Docker Compose文件。 如有必要,您可以限制启动的服务;比如,指定环境变量,并在启动相应的容器之前强制构建映像(即为 docker-compose up 命令添加--build选项)。
  • 点击 运行 按钮

你也可以参考前面介绍的 “从Dockerfile运行容器 " 的方式来处理 Docker Compose文件

Docker-compose 运行配置 还可以使用.env后缀标识环境文件,请将它们放在与Docker Compose文件相同的目录中。

故障排除

Docker集成插件有一定的局限性和缺陷,但是JetBrains一直在为它进行修复和改进。

  • 无法连接到 Docker for Windows:需要事先在 Docker设置 的 General 部分,启用 Expose daemon on tcp://localhost:2375 without TLS 选项(其作用是:将docker与本地的连接设置为不需要TLS加密)。

  • 不能使用 Docker Compose:确保Docker Compose可执行文件在 设置/首选项对话框中 的 Build, Execution, Deployment | Docker | Tools 中正确指定。

  • 无法使用端口绑定:确保相应的容器端口是被暴露的。 在 Dockerfile 中使用 EXPOSE 命令暴露。

参考

Docker - Help | IntelliJ IDEA
Docker connection settings - Help | IntelliJ IDEA

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录