dav*_*ark 9 docker docker-compose docker-container
如果容器自动崩溃,我想重新启动它。我不确定该怎么做。我有一个脚本docker-compose-deps.yml,其中包含elasticsearch,redis,nat和mongo。我在终端中运行此程序以进行设置:docker-compose -f docker-compose-deps.yml up -d。之后,我通过运行来设置容器docker-compose up -d。如果它们崩溃,是否有办法使这些容器重新启动?我注意到docker具有内置的重启功能,但是我不知道如何实现。
经过一些反馈,我将添加restart: always到我的docker-compose文件和docker-compose-deps.yml文件中。这看起来正确吗?还是这是您始终执行重启的方式?
docker-compose示例
myproject-server:
build: "../myproject-server"
dockerfile: Dockerfile-dev
restart: always
ports:
- 5880:5880
- 6971:6971
volumes:
- "../myproject-server/src:/src"
working_dir: "/src"
external_links:
- nats
- mongo
- elasticsearch
- redis
myproject-associate:
build: "../myproject-associate"
dockerfile: Dockerfile-dev
restart: always
ports:
- 5870:5870
volumes:
- "../myproject-associate/src:/src"
working_dir: "/src"
external_links:
- nats
- mongo
- elasticsearch
- redis
Run Code Online (Sandbox Code Playgroud)
docker-compose-deps.yml示例
nats:
image: nats
container_name: nats
restart: always
ports:
- 4222:4222
mongo:
image: mongo
container_name: mongo
restart: always
volumes:
- "./data:/data"
ports:
- 27017:27017
Run Code Online (Sandbox Code Playgroud)
如果您使用的是compose,它的重启标志类似于docker run命令中存在的重启标志,因此您可以使用它。这是有关此部分文档的链接-https: //docs.docker.com/compose/compose-file/
部署时,取决于部署到的位置。大多数容器集群(如kubernetes,mesos或ECS)将具有一些可用于自动重启容器的配置。如果您不使用任何这些工具,则可能是手动启动容器,然后可以像在本地一样使用重新启动标志。
在我看来很好。在处理 Docker 策略时,您想了解的是每个策略的含义。always策略意味着如果它因任何原因崩溃自动重启。
因此,如果它因任何原因停止,请继续并重新启动它。
那么你为什么要使用always而不是说on-failure?
在某些情况下,您可能有一个始终希望确保正在运行的容器,例如 Web 服务器。如果您正在运行公共 Web 应用程序,您可能希望该服务器 100% 的时间都可用。
因此,对于 Web 应用程序,我希望您要使用always. 另一方面,如果您在文件上运行工作进程然后自然退出,这将是该on-failure策略的一个很好的用例,因为工作容器可能已完成对文件的处理,您可能希望让它关闭并没有它重新启动。
那就是我希望使用该on-failure政策的地方。因此,不仅要知道语法,还要知道何时应用哪种策略以及每个策略的含义。
| 归档时间: |
|
| 查看次数: |
6463 次 |
| 最近记录: |