We use docker to manage multiple instances of various tools on a server that we control. We have an Nginx server working as a reverse proxy that forwards all requests to the appropriate containers in the configuration. Sometimes, after updating the container images and recreating the containers, we get the error that ports 80 and 443 are already in use by another container. This problem can happen even if no other container asks for them.
The following excerpt demonstrates the problem as mentioned above.
tux@server:~/docker-compose$ docker-compose up -d --remove-orphans; Recreating container_a ... Recreating container_a ... done Recreating container_b ... done Recreating container_c ... Recreating nginx_reverse_proxy ... error Recreating container_d ... done Recreating container_e ... done Recreating container_f ... done WARNING: Host is already in use by another container ERROR: for nginx_reverse_proxy Cannot start service nginx_reverse_proxy: driver failed programming external connectivity on endpoint nginx_reverse_proxy (5a790ed7e1b24aa36cb88cbd3f49d306efa8fe023bf5b3312655218319f23a35): Bind for 0.0.0.0:443 failed: port is already allocated ERROR: for nginx_reverse_proxy Cannot start service nginx_reverse_proxy: driver failed programming external connectivity on endpoint nginx_reverse_proxy (5a790ed7e1b24aa36cb88cbd3f49d306efa8fe023bf5b3312655218319f23a35): Bind for 0.0.0.0:443 failed: port is already allocated ERROR: Encountered errors while bringing up the project. tux@server:~/docker-compose$ sudo systemctl restart docker.socket docker.service;
To solve this issue, we had to restart two services using the systemctl
command:
docker.socket
docker.service
Specifically, on an Ubuntu server, we used the following command:
sudo systemctl restart docker.socket docker.service;
This post is also available in: Greek