我在docker网站的官方指南中有一个简单的例子.
我执行以下操作:
sudo docker run -d ubuntu:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"
a66asdasdhqie123...
Run Code Online (Sandbox Code Playgroud)
然后从创建的容器中获取一些输出:
sudo docker logs a66
hello
hello
hello
...
Run Code Online (Sandbox Code Playgroud)
然后我查找容器的运行进程:
sudo docker top a66
UID PID PPID C STIME TTY TIME CMD
root 25055 15152 0 20:07 ? 00:00:00 /bin/sh -c while true; do echo hello world; sleep 1; done
root 25295 25055 0 20:10 ? 00:00:00 sleep 1
Run Code Online (Sandbox Code Playgroud)
接下来我尝试杀死容器的第一个进程:
sudo docker exec a66 kill -9 25055
Run Code Online (Sandbox Code Playgroud)
但是在我做完之后没什么变化.进程仍然有效并且每秒输出"你好".我错了什么?
我有一个 docker-compose 文件,它创建 3 个 Hello World 应用程序并使用 nginx 来负载平衡不同容器之间的流量。
docker-compose 代码如下:
version: '3.2'
services:
backend1:
image: rafaelmarques7/hello-node:latest
restart: always
backend2:
image: rafaelmarques7/hello-node:latest
restart: always
backend3:
image: rafaelmarques7/hello-node:latest
restart: always
loadbalancer:
image: nginx:latest
restart: always
links:
- backend1
- backend2
- backend3
ports:
- '80:80'
volumes:
- ./container-balancer/nginx.conf:/etc/nginx/nginx.conf:ro
Run Code Online (Sandbox Code Playgroud)
我想验证该restart: always政策是否确实有效。
我尝试的方法如下:
docker-compose up;docker container ps;标识容器 IDdocker stop ID_Container或杀死/停止其中一个容器docker kill ID_Container。我期待在第 3 步之后(停止/杀死容器。这使它与代码 137 一起存在),重新启动策略将启动并再次创建一个新容器。
然而,这不会发生。我读到这是故意的,因为有一种方法可以手动停止具有重启策略的容器。
尽管如此,我想知道如何以触发重启策略的方式杀死容器,以便我可以实际验证它是否正常工作。
感谢您的帮助。