从 Docker 容器获取控制台输出

Getting console output from a Docker container

我构建了一个安装了 Python 和 Python 应用程序的映像。我的 Python 应用程序是一个 Hello, World! 应用程序,只是在屏幕上打印 "Hello, World!"。 Docker文件:

FROM python:2-onbuild
CMD ["python", "./helloworld.py"]

在我执行的控制台中:

docker run xxx/zzz

我可以看到 Hello, World! 输出。现在我正在尝试使用 ECS 中的任务执行相同的应用程序。我已经把它拉到 Docker Hub。

如何查看输出 Hello, World!?有没有办法查看我的容器是否正常运行?

您可以登录到您的容器实例并在那里执行 docker ps 等操作。

本指南介绍了如何连接到您的容器实例:

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html#instance-connect

docker logs <container id> 将显示容器 运行 的所有输出。如果您 运行 在 ECS 上安装它,您可能需要为 运行 容器的主机设置 DOCKER_HOST=tcp://ip:port

要实时查看Docker容器的日志,使用以下命令:

docker logs -f <CONTAINER>

-f--follow 选项将显示实时日志输出。此外,如果容器停止,它将获取其日志。

也许除了跟踪日志之外,更好的办法是通过以下方式进入容器:

docker exec -it CONTAINER_ID /bin/sh

并从内部调查您的流程。

您可以使用基本输出重定向到文件。

无论您在 Dockerfile 中有什么命令 运行 在命令末尾放置 >> /root/file.txt

所以... 运行 ifconfig >> /root/file.txt 运行 curl google.com >> /root/file.txt

然后您需要做的就是登录容器并输入“cat /root/file.txt”以准确查看屏幕上的内容。是否可以在 Dockerfile 末尾从容器复制到主机?我不知道,但也许吧。