Search code examples
dockerinfluxdb

Cannot restart container, how to restart Docker container?


When I print list

docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
f15a180315d3        influxdb            "/entrypoint.sh infl…"   2 hours ago         Exited (128) 2 hours ago                       influxdb
7b753ba600df        influxdb            "/entrypoint.sh infl…"   3 hours ago         Exited (0) 2 hours ago                         nervous_fermi
2ddc5d9af400        influxdb            "/entrypoint.sh infl…"   3 hours ago         Exited (0) 3 hours ago                         nostalgic_varahamihira
2e174a82d38d        influxdb            "/entrypoint.sh infl…"   3 hours ago         Exited (0) 3 hours a                           modest_mestorf

But if I try restart

docker container restart influxdb

I get

Error response from daemon: Cannot restart container influxdb: driver failed programming external connectivity on endpoint influxdb (06ee4d738dffecd1a202840699a899286f4bbb88392e4eb227d65670108687a6): Error starting userland proxy: listen tcp 0.0.0.0:8086: bind: address already in use

netstat -nl -p tcp  | grep 8086
tcp6       0      0 :::8086                 :::*                    LISTEN      1985/influxd 

How to restart docker container? If I go for

docker kill influxdb
Error response from daemon: Cannot kill container: influxdb: Container f15a180315d38c2f5fac929b2d0b9be3e8ca2a09033648b5c5174c15a64c4d71 is not running

Solution

  • Problem

    As indicated by the error message:

    Error response from daemon: Cannot restart container influxdb: driver failed programming external connectivity on endpoint influxdb (06ee4d738dffecd1a202840699a899286f4bbb88392e4eb227d65670108687a6): Error starting userland proxy: listen tcp 0.0.0.0:8086: bind: address already in use

    The port 8086 was already blocked ( therefore the address already in use part) by another process. Therefore the container was not able to run, because the container tried to start influxdb, but failed because of the already bound port. Additionally the output of netstat provided the hint, which process occupies the port:

    netstat -nl -p tcp  | grep 8086
    tcp6       0      0 :::8086    :::*    LISTEN      1985/influxd 
    

    (see the last part: 1985/influxd)

    Solution

    Kill the other process (first check, if the process is busy and you should save data before stopping it), e.g. using the kill command:

    kill 1985