Reputation: 15759
I have MongoDB as docker container When I restarted the server and tried to start the container it kept restarting forever.
I got the container log as follows
The main problem is
Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
I found many solutions to this problem, but all of them are based on the idea that I'm using the mongod service, which isn't my case.
I'm using a docker container and I can't run commands on this container until it is running. Sadly this error doesn't let the container start and keeps restarting.
I found the issue on the official bug tracker of MongoDB since version 3.6, but also it doesn't have any solution.
I also found a similar question on DigitalOcean support with no luck to find a solution.
Upvotes: 6
Views: 5734
Reputation: 2224
The problem is that mongo listens on unix socket by default and macos kernel has different idea about unix socket, not like sane kernels out there. So you need specifically disable it:
command: >
--nounixsocket
--bind_ip 127.0.0.1
Upvotes: -1
Reputation: 916
I'm wondering how after almost 2 years there is no good answer except "remove and create again".
Assume that your service name for the MongoDB container is mongo
and the image tag you're using is 4.4.18
.
Create directory docker/mongo
under your project's path where your docker-compose.yml
is placed.
Create executable docker/mongo/entrypoint.sh
with contents:
#!/bin/sh
if [ -z "$@" ];
then
echo "Remove leftover socket file"
rm /tmp/*.sock
echo "Running mongo"
mongod
else
eval $@
fi
Create docker/mongo/Dockerfile
with contents:
FROM mongo:4.4.18
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Modify your docker-compose.yml file, remove image:
and add build:
instead:
services:
mongo:
build: docker/mongo
Launch docker-compose up
and you're done.
Upvotes: 3
Reputation: 1
I ran into this problem when running Overleaf with docker compose. For me the problem was not solved by taking the containers down an bringing them back up again.
What worked for me instead was deleting the mongod.lock file and then restarting. With Overleaf, this file is stored in ./overleaf-toolkit/data/mongo/mongod.lock
.
Upvotes: 0
Reputation: 459
I had this problem and i'd solved with docker-compose down
and then docker-compose up
.
This problem is probably caused because your docker container is broken
Upvotes: 0
Reputation: 152
Warning!! When you create a MogoDB container, You should always link the directory
/data/db
inside your container to be on the host usingVolumes
.
In case /data/db
isn't linked to a volume, you will lose your data.
Try to stop the container using docker stop <container>
then remove it completely using docker rm <container>
then re-build using docker build
or docker-compose build
depends on your usage
Note: Whenever you remove the container it's data will be removed along with it. so make sure that you have a recent backup with the database.
Upvotes: 6