Docker Volume
Create Volume
There are multiple options
1. With -v flag.
docker run -v /data
Here /data folder can be accessed from inside the running container. It is mapped to
/var/lib/docker/volumes/8e0b3a9d5c544b63a0bbaa788a250e6f4592d81c089f9221108379fd7e5ed017/_data
4. we can also specify the path
docker run -v /home/usr/docker_data:/data
3. Using DOCKERFILE
One can add
VOLUME /data
Notes:
3.1. Here we can not specify path on host.
3.2. After creating VOLUME, we cannot add file
RUN useradd foo
VOLUME /data
RUN touch /data/x
RUN chown -R foo:foo /data
This will not work.
3.3. We can do the same in DOCKERFILE, before creating VOLUME
RUN useradd foo
RUN mkdir /data
RUN touch /data/x
RUN chown -R foo:foo /data
VOLUME /data
This will work
4. Create a volume and attached it
docker volume create --name my-vol
docker run -v my-vol:/data
It is similar to earlier approach. Here we just specify the name to volume.
Earlier instead of creating volume, data container was used.
5. we can specify volume of other container, even if the container is not running.
docker run --volumes-from"container name"
The option -v for persistent volume and the option --volumes-from is for ephemeral volume
Delete volume
* docker rm command will not delete volume. Orphan volume will remain
* Remove parent docker docker rm -v If the volume is not referred by any other container, then it will be removed.
* Volumes linked to user specified host directories are never deleted by docker.
* To have a look at the volumes in your system use docker volume ls:
docker volume ls
* To delete all volumes
docker volume rm $(docker volume ls -q)
There are multiple options
1. With -v flag.
docker run -v /data
Here /data folder can be accessed from inside the running container. It is mapped to
/var/lib/docker/volumes/8e0b3a9d5c544b63a0bbaa788a250e6f4592d81c089f9221108379fd7e5ed017/_data
4. we can also specify the path
docker run -v /home/usr/docker_data:/data
3. Using DOCKERFILE
One can add
VOLUME /data
Notes:
3.1. Here we can not specify path on host.
3.2. After creating VOLUME, we cannot add file
RUN useradd foo
VOLUME /data
RUN touch /data/x
RUN chown -R foo:foo /data
This will not work.
3.3. We can do the same in DOCKERFILE, before creating VOLUME
RUN useradd foo
RUN mkdir /data
RUN touch /data/x
RUN chown -R foo:foo /data
VOLUME /data
This will work
4. Create a volume and attached it
docker volume create --name my-vol
docker run -v my-vol:/data
It is similar to earlier approach. Here we just specify the name to volume.
Earlier instead of creating volume, data container was used.
5. we can specify volume of other container, even if the container is not running.
docker run --volumes-from"container name"
The option -v for persistent volume and the option --volumes-from is for ephemeral volume
Delete volume
* docker rm command will not delete volume. Orphan volume will remain
* Remove parent docker docker rm -v If the volume is not referred by any other container, then it will be removed.
* Volumes linked to user specified host directories are never deleted by docker.
* To have a look at the volumes in your system use docker volume ls:
docker volume ls
* To delete all volumes
docker volume rm $(docker volume ls -q)
1 comments:
https://dev.to/jibinliu/how-to-persist-data-in-docker-container-2m72
https://hackernoon.com/docker-data-containers-cb250048d162
https://docs.docker.com/samples/library/mysql/
https://severalnines.com/blog/mysql-docker-containers-understanding-basics
https://www.digitalocean.com/community/tutorials/how-to-share-data-between-docker-containers
Post a Comment