docker - VScode 远程容器 - 如何查看 dockerised 服务控制台输出?

标签 docker visual-studio-code docker-compose vscode-remote

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

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

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

从用户的角度来看,容器正在运行,但容器内发生的输出似乎不可访问(即使 docker-compose 命令 没有使用守护进程模式)。

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

如果我没看错的话,VScode Remote-Containers 文档似乎建议覆盖默认行为,即:

  • 抑制您的 docker-compose 命令,否则它会启动服务,而是应用一些虚拟命令在创建时持久保存容器,然后
  • 从远程 session 中手动启动服务(使用 Debug模式,或通过 VScode 终端)。这显示了输出,但在可访问的 VSCode 终端 session 中。

有没有办法:

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

B) 访问服务的输出而不必像上面那样覆盖(覆盖看起来很老套)

*这将是理想的。 Remote-Containers“Attach to Running Container...”命令听起来很接近这个。但是它似乎在我不认识的目录中实例化了自己,而且似乎不是容器。

最佳答案

选项A似乎可以通过以下方式实现

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

或者(感谢@cybercoder)

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

关于docker - VScode 远程容器 - 如何查看 dockerised 服务控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65650113/

相关文章:

node.js - 使用 docker-compose 对 Node Express 应用程序进行 Docker 化

docker - dockerfiles中的docker卷

docker - 无法在本地找到图像 'xxxx'

docker - 在 openshift docker 实例上安装 Fabric8

visual-studio-code - VSCode 在哪里存储扩展的启用/禁用状态?

docker - 如何配置 docker 日志记录以有条件地发送到 CloudWatch?

python - 如何使用 Docker/Kubernetes 正确运行 Python?

python - VSCode 不显示 python 脚本错误输出

java - 如何在vscode中使用相对路径为eclipse Java项目添加引用的库JAR文件

mysql - 使用 Docker-Compose 连接到 MariaDB 时出错, "Connection Lost: The server closed the connection"