docker - 重新启动容器时,Docker webapp 卡住了
问题描述
我已经在 Arch Linux 上安装了 docker。尝试运行 Web 应用程序的 docker 映像,但是我只能第一次运行它们。如果我停止容器并再次运行它,浏览器会继续加载。我必须重新启动 docker 服务才能解决这个问题。IE
docker run --rm --name war -p 8080 -d mvpjava/springboot_docker_tomcat:1.0
curl http://172.17.0.2:8080 ## gives the response.
docker container stop war
docker run --rm --name war -p 8080 -d mvpjava/springboot_docker_tomcat:1.0
curl http://172.17.0.2:8080 ## stuck :(
docker container stop war
sudo systemctl restart docker
docker run --rm --name war -p 8080 -d mvpjava/springboot_docker_tomcat:1.0
curl http://172.17.0.2:8080 ## gives the response again.
我已经设置好IPForward=kernel
了/usr/lib/systemd/network/<interface>.network
dns 配置/etc/docker/daemon.json
。在 docker 日志中也看不到任何错误。
我是否缺少任何配置?
解决方案
我试图运行上面的图像看起来一切都很好,但我会提到两件事。
docker run --rm --name war -p 8080 -d mvpjava/springboot_docker_tomcat:1.0
上面的命令会将任何可用的动态端口映射到 container port 8080
。并且这样做curl localhost:8080
不会给出必要的响应,因为您不知道哪个端口是地图。
安装 curl 后在容器内
您的 docker 映像不包含 curl 我已验证。
后来我分配了静态端口,因此它使用 curl 在主机上工作。
然后我停止容器并重新启动,但一切都很好。
您始终可以使用命令(替换为容器名称)找到暴露的容器端口(在这种情况下8080
)已映射到的主机端口。 docker port war
war
命令的输出是这样的:8080/tcp -> 0.0.0.0:32769
. 因此,32769
应该在主机中使用端口来访问端口上的容器8080
。
推荐阅读
- 3d - 在方向更新之间平滑 3D 旋转的方法?
- c# - 协程控制组
- excel - 位于多个单元格中并检查多个范围的 vba 代码
- python - 在 python 中将视频帧直接流式传输到 youtube
- c# - 在多个 CMS 签名中缓存 PIN
- python - 使用 Python 发送 UDP 数据报
- python - IndexError:列表索引超出范围 - 有
- python - 根据字典键和列表之间的匹配更改字典值
- deep-learning - 如何在 PyTorch 中的 MNIST 上将所有 5 批 CIFAR10 加载到单个数据结构中?
- machine-learning - 使用单独的数据集进行模型验证