i have a running Mongo DB Container called xyz from offical Mongo Image. i created the container with docker run -d -p 21707:21707 mongo
In this container i create
I used docker commit and created a new image, pushed it on the docker hub. If i pull the image on a other system and create a new container from this image, there are no data like in my origin container xyz.
The mongo docker image writes its data into a volume. As a result, those data won't be saved to a new docker image created with docker commit
. docker export
won't produce your data for the same reason.
how could i reach to migrate this "xyz" running container with my sample data in a new image/container?
What you want is either:
docker run
-v optionAlso, this SO question might help you figure out volumes.
I wanted to make an image to test things around authentication and I has the same issue. I solved it this way:
Dockerfile
FROM mongo
COPY setup.sh /
RUN chmod +x /setup.sh
RUN /setup.sh
ENTRYPOINT ["/usr/bin/mongod"]
CMD ["--auth", "--dbpath=/containerdb"]
setup.sh
#!/bin/bash
mkdir containerdb
mongod --auth --dbpath=/containerdb &
until mongo admin --eval 'db.createUser({"user":"root", "pwd":"password", "roles": [ "root" ] })'
do
echo 'Mongo not yet ready, waiting 1 sec until retry'
sleep 1
done
mongod --shutdown --dbpath=/containerdb
Bim! When you run this image you have a mongodb with authentication activated and a root user. The key is to workaround the VOLUME in the base Dockerfile by storing the data somewhere else.