Containers not restarted after update with restart always in docker-compose.yml

前端 未结 4 1383
孤街浪徒
孤街浪徒 2021-01-15 02:35

I have some containers which all of them have the always restart value in the docker-compose file like this:

version: "3.7"
services:

  container:
         


        
相关标签:
4条回答
  • 2021-01-15 03:18

    From the comments it appears the docker service was not configured to automatically start on boot. Docker is a client server app, and the server runs from systemd with a separate service for the docker socket used by the client to talk to the server. Therefore it's possible for any call with the docker command to cause the server to get launched by hitting the docker socket.

    The service state in systemd can be checked with:

    systemctl status docker
    

    or you may want to check:

    systemctl is-enabled docker
    

    It can be manually started with:

    systemctl start docker
    

    And it can be enabled to start with:

    systemctl enable docker
    

    All of the above commands need to be run as root.

    0 讨论(0)
  • 2021-01-15 03:31

    This requires the Docker service to get started on boot instead of using the default socket activation that starts on-demand like you decribed with execution of "docker ps"

    Here is the required Container Linux Config to enable the Docker service while disabling socket activation:

    systemd:
      units:
        # Ensure docker starts automatically instead of being socket-activated
        - name: docker.socket
          enabled: false
        - name: docker.service
          enabled: true
    
    0 讨论(0)
  • 2021-01-15 03:42

    always Always restart the container if it stops. If it is manually stopped, it is restarted only when the Docker daemon restarts, or the container itself is manually restarted.

    unless-stopped Similar to always, except that when the container is stopped (manually or otherwise), it is not restarted even after the Docker daemon restarts.

    If you had an already running container that you wanted to change the restart policy for, you could use the docker update command to change that, and the below command will ensure all currently running containers will be restarted unless stopped

    $ docker update --restart unless-stopped $(docker ps -q)
    

    NOTE: Keep the following in mind when using restart policies

    1. A restart policy only takes effect after a container starts successfully. In this case, starting successfully means that the container is up for at least 10 seconds and Docker has started monitoring it. This prevents a container that does not start at all from going into a restart loop.

    2. If you manually stop a container, its restart policy is ignored until the Docker daemon restarts, or the container is manually restarted. This is another attempt to prevent a restart loop.

    3. Restart policies only apply to containers. Restart policies for swarm services are configured differently

    Documentation

    0 讨论(0)
  • 2021-01-15 03:42

    It's container restart policy. restart: always restart the container if it stops. If it is manually stopped, it is restarted only when Docker daemon restarts or the container itself is manually restarted.Please check this link restart_policy.

    0 讨论(0)
提交回复
热议问题