docker - EC2实例重启时如何自动重启docker-compose集群

标签 docker docker-compose

我有这个docker-compose.yml文件:

version: '2.2'
services:
  kibana:
    restart: always
    depends_on:
      - es01
      - es02
    image: docker.elastic.co/kibana/kibana:7.3.1
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_HOSTS: http://es01:9200
      ELASTICSEARCH_URL: http://es01:9200
  es01:
    restart: always
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.1
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
  es02:
    restart: always
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.1
    container_name: es02
    environment:
      - node.name=es02
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata02:/usr/share/elasticsearch/data

volumes:
  esdata01:
    driver: local
  esdata02:
    driver: local

但是当ec2实例重新启动时,这些容器没有重新启动。也许我应该改用这样的东西:
docker-compose up -d --restart   # the --restart flag maybe?



注意yml文件中的“重新启动”属性,猜想在这种情况下它们没有执行任何操作吗?

但没有--restart标志:

(account-api) ubuntu@account_management5-interos:~/interos/repos/elastic-search-app$

docker-compose up -d --restart Builds, (re)creates, starts, and attaches to containers for a service.

Unless they are already running, this command also starts any linked services.

The `docker-compose up` command aggregates the output of each container. When
the command exits, all containers are stopped. Running `docker-compose up -d`
starts the containers in the background and leaves them running.

If there are existing containers for a service, and the service's configuration
or image was changed after the container's creation, `docker-compose up` picks
up the changes by stopping and recreating the containers (preserving mounted
volumes). To prevent Compose from picking up changes, use the `--no-recreate`
flag.

If you want to force Compose to stop and recreate all containers, use the
`--force-recreate` flag.

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]

Options:
    -d, --detach               Detached mode: Run containers in the background,
                               print new container names. Incompatible with
                               --abort-on-container-exit.
    --no-color                 Produce monochrome output.
    --quiet-pull               Pull without printing progress information
    --no-deps                  Don't start linked services.
    --force-recreate           Recreate containers even if their configuration
                               and image haven't changed.
    --always-recreate-deps     Recreate dependent containers.
                               Incompatible with --no-recreate.
    --no-recreate              If containers already exist, don't recreate
                               them. Incompatible with --force-recreate and -V.
    --no-build                 Don't build an image, even if it's missing.
    --no-start                 Don't start the services after creating them.
    --build                    Build images before starting containers.
    --abort-on-container-exit  Stops all containers if any container was
                               stopped. Incompatible with -d.
    -t, --timeout TIMEOUT      Use this timeout in seconds for container
                               shutdown when attached or when containers are
                               already running. (default: 10)
    -V, --renew-anon-volumes   Recreate anonymous volumes instead of retrieving
                               data from the previous containers.
    --remove-orphans           Remove containers for services not defined
                               in the Compose file.
    --exit-code-from SERVICE   Return the exit code of the selected service
                               container. Implies --abort-on-container-exit.
    --scale SERVICE=NUM        Scale SERVICE to NUM instances. Overrides the
                               `scale` setting in the Compose file if present.


我正在寻找等同于:
docker run -d -p 27017:27017 \
    --restart unless-stopped \    # RESTART
    --name 'interos-mongo' \
    'mongo:4.0' 

最佳答案

实际上docker-compose不能处理真正的重启,而这些重启是由dockerd完成的。

最终,写在撰写配置文件中的重新启动策略将被写入容器的重新启动策略,您可以使用以下命令进行检查。

docker inspect --format '{{.HostConfig.RestartPolicy}}' you-container-ID-or-name

回到您的问题,您是否已将dockerd设置为自动启动?即systemctl enable docker
外部参照:https://docs.docker.com/compose/production/

关于docker - EC2实例重启时如何自动重启docker-compose集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141265/

相关文章:

php - docker-compose php laravel - session 不会保持不变

php - 无需批量处理 “connect”两个Docker容器的最佳方法

windows - 在 Windows Server 2016 TP4 上安装 Docker

java - 如何创建可重用的 dockerfile 模板?

macos - Mac上的docker的调试选项是什么?我如何看到Docker客户端的更多详细日志记录?

docker 和不同端口上的两个服务

ruby-on-rails - 如何使用 AWS ECS 启用 tty 并运行交互式控制台?

postgresql - 使用 docker-compose 在 postgresql 中启用日志记录

c++11 - docker 中的 `npm start` 以 : Please install a supported C++11 compiler and reinstall the module 结尾

mysql - 如何通过 SSH 连接到 MySQL Docker 容器?