winson 发表于 2019-2-21 11:09:40

Docker之七:Docker数据卷管理

  容器数据持久化
  1、数据卷:将本地磁盘mount进入容器
-v /dest
-v src:dst |
  2、数据卷容器:将外部容器分享给容器
--volumes-from
数据卷容器专门用来挂载数据卷的容器,以供其他容器引用和使用
  3、数据卷管理命令
docker volume
  一、数据卷:
1、给容器内部映射一个外部数据卷 -v src:dest
# docker run -d --name web1 -v /opt/nginx:/usr/share/nginx/html-p 808:80 nginx:1.8
a288f924bb7d4d64b7e64794cbdc14592a1fc9c0b743404f16a880b0850fff0c
# docker exec -it web1 bash
root@a288f924bb7d:/# ls /usr/share/nginx/html/
index.html
  2、如果不指定本地数据卷位置,默认存储在/var/lib/docker/volumes下
# docker run -d --name web2 -p 809:80 -v /usr/share/nginx/html nginx:1.8
978187c40573fb15ac547da84596847a71c48639ba21fa556b6d12149ca8265d
#
# cd /var/lib/docker/volumes/
# ls e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649/_data/
client_tempfastcgi_tempproxy_tempscgi_tempuwsgi_temp
  # docker inspect web2
{
"Type": "volume",
"Name": "e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649",
"Source": "/var/lib/docker/volumes/e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649/_data",
"Destination": "/var/cache/nginx",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
  将本地磁盘映射docker中
# mkdir -p /data/docker-volumes
# docker run -d --name nginx-volume-test4 -v /data/docker-volumes/:/data nginx
eb3e5a6677a26e588f6bf48cdfc7394ffd31c93bf28f0d0c62f9c1dc711ec858
# docker ps -l
CONTAINER ID      IMAGE               COMMAND                  CREATED             STATUS            PORTS               NAMES
eb3e5a6677a2      nginx               "nginx -g 'daemon off"   18 seconds ago      Up 17 seconds       80/tcp, 443/tcp   nginx-volume-test4
  # docker inspect -f "{{ .State.Pid }}" nginx-volume-test4
11232
# nsenter -t 11232 -m -u -i -n -p
root@eb3e5a6677a2:/# ls
binbootdatadevetchomeliblib64mediamntoptprocrootrunsbinsrvsystmpusrvar
root@eb3e5a6677a2:/# ls data
file1web6
root@eb3e5a6677a2:/#
  二、数据卷容器
  # mkdir /opt/dbdata
# docker create -v /opt/dbdata:/dbdata --name dbstore centos
4d68156146da097910f1424ea41d042929aba622e83eb736b613c184bcb4ad5d
  # docker run -it --rm --volumes-from dbstore centos
# df -h
Filesystem               SizeUsed Avail Use% Mounted on
rootfs                  46G3.6G   42G   8% /
overlay                   46G3.6G   42G   8% /
tmpfs                  926M   0926M   0% /dev
tmpfs                  926M   0926M   0% /sys/fs/cgroup
/dev/mapper/centos-root   46G3.6G   42G   8% /dbdata
# cd dbdata/
# ls
test
注意:但是容器内不能写文件,没有权限
  三、docker volume
# docker volume
  Usage:    docker volume COMMAND
  Manage volumes
  Options:
--help   Print usage
  Commands:
create      Create a volume
inspect   Display detailed information on one or more volumes
ls          List volumes
prune       Remove all unused volumes
rm          Remove one or more volumes
  Run 'docker volume COMMAND --help' for more information on a command.
# docker volume ls
DRIVER            VOLUME NAME
local               2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local               95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local               980041d114c6c813b1855c9e809a7347951426e805fe7d79608132603c4f6563
local               e07d69c288b08e60fcdfbd35a5c86a4c251de74659cd24748a4eaeb1291e710d
local               e3a38c545ea23f64abddc3e901313e32a1d045acf433a06a98a16e60299b3169
local               e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649
local               e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424
#
  删除没有挂载的数据卷
# docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? y
Deleted Volumes:
e07d69c288b08e60fcdfbd35a5c86a4c251de74659cd24748a4eaeb1291e710d
980041d114c6c813b1855c9e809a7347951426e805fe7d79608132603c4f6563
e3a38c545ea23f64abddc3e901313e32a1d045acf433a06a98a16e60299b3169
  Total reclaimed space: 0 B
# docker volume ls
DRIVER            VOLUME NAME
local               2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local               95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local               e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649
local               e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424
  查看一个数据卷的详细信息
# docker inspect e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424/_data",
"Name": "e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424",
"Options": {},
"Scope": "local"
}
]
  创建一个数据卷
# docker volume create docker-volume
docker-volume
# docker volume ls
DRIVER            VOLUME NAME
local               2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local               95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local               docker-volume
  # cd /var/lib/docker/volumes/
# ls
2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
docker-volume



页: [1]
查看完整版本: Docker之七:Docker数据卷管理