首页 > 解决方案 > VScode 远程容器 - 如何查看 dockerised 服务控制台输出?

问题描述

这是这个问题的后续(目前的答案似乎都没有一针见血)。

VScode 启动远程 vscode 会话(使用 VScode Remote-Containers)的默认行为似乎是:

  1. 运行项目的 docker-compose 文件
    • 如果用户在构建过程中选择显示日志(一个 UI 弹出窗口),则打开一个称为Dev Containers反映 Docker 的构建日志记录的 VScode 终端会话,并辅以 VSCode 远程容器日志记录。此输出在构建完成后结束。
    • 如果用户没有选择show log,然后在构建完成后打开一个 VScode 终端,只需在容器中启动一个新的 bash 会话。不存在其他 VScode 终端会话。
  2. 从正在运行的容器内启动 VScode 会话

从用户的角度来看,容器正在运行,但容器内部发生的输出似乎无法访问(即使 docker-composecommand没有使用守护程序模式)。

那么,用户现在如何查看容器内发生的控制台输出呢?

如果我阅读正确,VScode Remote-Containers 文档似乎建议覆盖默认行为,即:

有没有办法:

A)通过系统终端(例如docker-compose up)启动服务,然后在这个已经运行的容器*中启动一个 VSCode 远程会话,或者

B)无需如上所述覆盖即可访问服务的输出(覆盖似乎很hacky)

*这将是理想的。远程容器“附加到正在运行的容器...”命令听起来很接近这个。但它似乎在我不认识的目录中实例化自己,而且似乎不是容器。

标签: dockervisual-studio-codedocker-composevscode-remote

解决方案


选项 A 似乎可以通过

  1. 在终端 ( docker-compose up)中启动服务
  2. 在 vscode 中,使用远程容器“远程资源管理器”UI(不是cmd+P“附加到容器”命令)来选择正在运行的容器的工作目录。右键单击>“在容器中打开”。这实际上并没有打开一个容器,它“从容器内打开目录”。

或者(感谢@cybercoder)

  1. 让 vscode 启动服务
  2. 在单独的终端中:docker logs -f container_namedocker-compose logs -f

推荐阅读