这是这个问题的后续内容(目前的答案似乎都没有切中要害(。
VScode启动远程VScode会话(使用VScode远程容器(的默认行为似乎是:
- 运行项目的docker compose文件
- 如果用户在构建期间选择显示日志(UI弹出窗口(,则打开一个名为
Dev Containers
的VScode终端会话,反映Docker的构建日志记录,并辅以VScode远程容器日志记录。此输出在生成完成后结束 - 如果用户没有选择显示日志,并且稍后在构建完成后打开一个VScode终端,那么只需在容器中启动一个新的bash会话。不存在其他VScode终端会话
- 如果用户在构建期间选择显示日志(UI弹出窗口(,则打开一个名为
- 从正在运行的容器内部启动VScode会话
从用户的角度来看,容器正在运行,但容器内发生的输出似乎不可访问(即使docker composecommand
没有使用守护进程模式(。
那么,用户现在如何查看容器内发生的控制台输出呢
如果我读得正确的话,VScode远程容器文档似乎建议覆盖默认行为,即:
- 暂停您的docker compose
command
,否则它会启动服务,而是在创建时应用一些伪命令来持久化容器,然后 - 从远程会话内部手动启动服务(使用调试模式或通过VScode终端(。这揭示了输出,但在可访问的VSCode终端会话内
没有办法:
A( 通过系统终端(例如docker-compose up
(启动服务,然后在此已经运行的容器*或中启动VSCode远程会话
B( 访问服务的输出而不必如上所述进行覆盖(覆盖似乎很糟糕(
*这将是理想的。"远程容器";附加到正在运行的容器"这个命令听起来很接近这个。但它似乎在一个我不认识的目录中实例化了自己,而且似乎不是容器。
似乎可以实现选项A
- 在终端中启动服务(
docker-compose up
( - 在vscode中,使用远程容器";远程资源管理器";UI(而不是cmd+P"附加到容器"命令(,以选择正在运行的容器的工作目录。右键单击>quot;在容器中打开";。这实际上并没有打开新的容器;打开目录,从容器内">
OR(感谢@cybercoder(
- 让vscode启动服务
- 在单独的终端中:
docker logs -f container_name
或docker-compose logs -f