docker - VScode 远程容器 - 如何查看 dockerised 服务控制台输出?
问题描述
这是这个问题的后续(目前的答案似乎都没有一针见血)。
VScode 启动远程 vscode 会话(使用 VScode Remote-Containers)的默认行为似乎是:
- 运行项目的 docker-compose 文件
- 如果用户在构建过程中选择显示日志(一个 UI 弹出窗口),则打开一个称为
Dev Containers
反映 Docker 的构建日志记录的 VScode 终端会话,并辅以 VSCode 远程容器日志记录。此输出在构建完成后结束。 - 如果用户没有选择show log,然后在构建完成后打开一个 VScode 终端,只需在容器中启动一个新的 bash 会话。不存在其他 VScode 终端会话。
- 如果用户在构建过程中选择显示日志(一个 UI 弹出窗口),则打开一个称为
- 从正在运行的容器内启动 VScode 会话
从用户的角度来看,容器正在运行,但容器内部发生的输出似乎无法访问(即使 docker-composecommand
没有使用守护程序模式)。
那么,用户现在如何查看容器内发生的控制台输出呢?
如果我阅读正确,VScode Remote-Containers 文档似乎建议覆盖默认行为,即:
- 抑制你的 docker-compose
command
否则会启动服务,而是应用一些虚拟命令在创建时持久化容器,然后 - 从远程会话中手动启动服务(使用调试模式,或通过 VScode 终端)。这会显示输出,但在可访问的 VSCode 终端会话中。
有没有办法:
A)通过系统终端(例如docker-compose up
)启动服务,然后在这个已经运行的容器*中启动一个 VSCode 远程会话,或者
B)无需如上所述覆盖即可访问服务的输出(覆盖似乎很hacky)
*这将是理想的。远程容器“附加到正在运行的容器...”命令听起来很接近这个。但它似乎在我不认识的目录中实例化自己,而且似乎不是容器。
解决方案
选项 A 似乎可以通过
- 在终端 (
docker-compose up
)中启动服务 - 在 vscode 中,使用远程容器“远程资源管理器”UI(不是cmd+P“附加到容器”命令)来选择正在运行的容器的工作目录。右键单击>“在容器中打开”。这实际上并没有打开一个新容器,它“从容器内打开目录”。
或者(感谢@cybercoder)
- 让 vscode 启动服务
- 在单独的终端中:
docker logs -f container_name
或docker-compose logs -f
推荐阅读
- imagemagick - 了解 CMYK 到 RGB 转换代码
- javascript - 尝试在 Heroku 上托管 VueJS 应用程序。在 heroku 日志中获取“npm ERR!缺少脚本:开始”,在我的页面上获取“应用程序错误”
- database - 如何从 laravel 4.2 访问远程数据库
- angularjs - 我们如何在 Angular JS 中在运行时获取脚本响应方法
- asynchronous - 我应该在 Rust 中返回 await 吗?
- flutter - 如何在行中制作灵活的多个小部件?
- angular - 为什么这个 app-transition-group 和 app-transition-group-item 自定义组件在 angular8 中不起作用(与 angular2 一起使用)?
- php - Laravel 计算并忽略空值
- c++ - C ++ Map插入具有重复键的对
- excel - 使用 VBA 控制 Excel 数据透视表字段列表中元素的顺序