Docker Data generated by the container , If you do not back up , After the container instance is deleted , Naturally, there is no data in the container . In order to save data in docker We use volumes in .
characteristic :
1: Data volumes can share or reuse data between containers
2: Changes in the volume can take effect directly in real time
3: Changes in the data volume are not included in the update of the mirror
4: The life cycle of a data volume lasts until no container uses it
Mount command :
# docker run -it --privileged=true -v / Host absolute directory :/ Absolute directory in container Container name docker run -it
--privileged=true -v /tmp/my_dir:/tmp/docker_dir ubuntu /bin/bash
After mounting , have access to
docker inspect container ID
View the information in the container , find "Mount" node
{ ... "Mounts": [{ { "Type": "bind", // Absolute directory of the host "Source": "/tmp/my_dir", //
Absolute directory in container "Destination": "/tmp/docker_dir", "Mode": "", "RW": true,
"Propagation": "rprivate" } ] ... }
When container stop after , Continue to update files under the directory in the host machine , When the container again start Then you can see the updated file .
be careful : When multiple containers mount the directory of the same host , Then these containers can read and write files under the directory of the host .
Read write rules :ro and rw
The mounted directory is for the container directory , Default is RW( Read only write only ) Permissions for , The following commands are used to control the read and write rules :
# Set the read-only write permission of the container directory docker run -it -privileged=true -v
/tmp/my_dir:/tmp/docker_dir:rw ubuntu /bin/bash # Set container directory read-only permission docker run -it
-privileged=true -v /tmp/my_dir:/tmp/docker_dir:ro ubuntu /bin/bash #
If set ro jurisdiction , When updating files in the container directory , Will prompt :touch: cannot touch 'd.txt': Read-only file system
Volume inheritance and sharing :--volumes-from
# Create the first container docker run -it --privileged=true --name do1 -v
/tmp/my_dir:/tmp/docker_dir ubuntu /bin/bash # When creating the second container , Inherit the volume rule of the first container , format : #
docker run -it --volumes-from Parent class container name ubuntu /bin/bash docker run -it
--privileged=true --name do2 --volumes-from do1 ubuntu /bin/bash
In this way, the second container also has the same host directory mount point as the first container .
Technology
Daily Recommendation