Docker之七:Docker数据卷管理

容器数据持久化

1、数据卷:将本地磁盘mount进入容器
-v /dest
-v src:dst [ro]|[rw]

2、数据卷容器:将外部容器分享给容器
--volumes-from
数据卷容器专门用来挂载数据卷的容器,以供其他容器引用和使用

3、数据卷管理命令
docker volume

一、数据卷:
1、给容器内部映射一个外部数据卷 -v src:dest
[[email protected] nginx]# docker run -d --name web1 -v /opt/nginx:/usr/share/nginx/html -p 808:80 nginx:1.8
a288f924bb7d4d64b7e64794cbdc14592a1fc9c0b743404f16a880b0850fff0c
[[email protected] nginx]# docker exec -it web1 bash
[email protected]:/# ls /usr/share/nginx/html/
index.html

2、如果不指定本地数据卷位置,默认存储在/var/lib/docker/volumes下
[[email protected] nginx]# docker run -d --name web2 -p 809:80 -v /usr/share/nginx/html nginx:1.8
978187c40573fb15ac547da84596847a71c48639ba21fa556b6d12149ca8265d
[[email protected] nginx]#
[[email protected] nginx]# cd /var/lib/docker/volumes/
[[email protected] volumes]# ls e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649/_data/
client_temp fastcgi_temp proxy_temp scgi_temp uwsgi_temp

[[email protected] volumes]# 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中
[[email protected] ~]# mkdir -p /data/docker-volumes
[[email protected] data]# docker run -d --name nginx-volume-test4 -v /data/docker-volumes/:/data nginx
eb3e5a6677a26e588f6bf48cdfc7394ffd31c93bf28f0d0c62f9c1dc711ec858
[[email protected] data]# 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

[[email protected] data]# docker inspect -f "{{ .State.Pid }}" nginx-volume-test4
11232
[[email protected] data]# nsenter -t 11232 -m -u -i -n -p
[email protected]:/# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[email protected]:/# ls data
file1 web6
[email protected]:/#

二、数据卷容器

[[email protected] ~]# mkdir /opt/dbdata
[[email protected] ~]# docker create -v /opt/dbdata:/dbdata --name dbstore centos
4d68156146da097910f1424ea41d042929aba622e83eb736b613c184bcb4ad5d

[[email protected] ~]# docker run -it --rm --volumes-from dbstore centos
[[email protected] /]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 46G 3.6G 42G 8% /
overlay 46G 3.6G 42G 8% /
tmpfs 926M 0 926M 0% /dev
tmpfs 926M 0 926M 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 3.6G 42G 8% /dbdata
[[email protected] /]# cd dbdata/
[[email protected] dbdata]# ls
test
注意:但是容器内不能写文件,没有权限

三、docker volume
[[email protected] ~]# 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.
[[email protected] ~]# docker volume ls
DRIVER VOLUME NAME
local 2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local 95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local 980041d114c6c813b1855c9e809a7347951426e805fe7d79608132603c4f6563
local e07d69c288b08e60fcdfbd35a5c86a4c251de74659cd24748a4eaeb1291e710d
local e3a38c545ea23f64abddc3e901313e32a1d045acf433a06a98a16e60299b3169
local e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649
local e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424
[[email protected] ~]#

删除没有挂载的数据卷
[[email protected] ~]# docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
e07d69c288b08e60fcdfbd35a5c86a4c251de74659cd24748a4eaeb1291e710d
980041d114c6c813b1855c9e809a7347951426e805fe7d79608132603c4f6563
e3a38c545ea23f64abddc3e901313e32a1d045acf433a06a98a16e60299b3169

Total reclaimed space: 0 B
[[email protected] ~]# docker volume ls
DRIVER VOLUME NAME
local 2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local 95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local e96f7bc2afc0b46d99fe59665d1f0b7ed9375c9492d115660ada00d82b68b649
local e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424

查看一个数据卷的详细信息
[[email protected] ~]# docker inspect e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424/_data",
"Name": "e9d6633614ad9fef67881ab094a54f0258c40273ce0f694b6e6985ec312f3424",
"Options": {},
"Scope": "local"
}
]

创建一个数据卷
[[email protected] ~]# docker volume create docker-volume
docker-volume
[[email protected] ~]# docker volume ls
DRIVER VOLUME NAME
local 2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
local 95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
local docker-volume

[[email protected] ~]# cd /var/lib/docker/volumes/
[[email protected] volumes]# ls
2a3f571ee6ae8b2ed9890a97faeb1e30d7ab1b0ad973bb0c6f4f4b0e3f544036
95b0346142cb123d97f49614bd21492b558660ea51e96672d7d3c52b6ec32f5f
docker-volume

原文地址:http://blog.51cto.com/andyliu/2126616

时间: 2024-08-27 19:35:43

Docker之七:Docker数据卷管理的相关文章

[docker]动态挂卷与数据卷管理

声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! 动态挂卷 目前docker不支持动态挂卷.有同事就提出,以下方法是否可行:1. 将块设备通过ln链接到容器与host的映射目录.2. 将块设备挂载到容器与host的映射目录. 以下是实验过程:由于非特权无法看到/dev下的设备,因此ln链接实际是无效的. 同理,对于其他块设备,也是这样的.当然,我们可以配置privileged

Docker学习第三天(Docker数据卷管理)

1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中: 1.volumes:Docker管理宿主机文件系统的一部分(默认文件位置:/var/lib/docker/volumes) 常用 由上图可知我们到了 /var/lib/docker/volumes 目录下有的文件名很长这时匿名 二有的则是我们创建时制定的 2.

docker容器的数据卷以及使用方式

            Docker容器的数据卷 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

Docker 网络及数据卷设置 [三]

Docker 网络及数据卷设置 [三] Docker 时间:2016年11月8日 一.Docker网络设置 默认情况下,docker会创建一个桥接网卡[docker 0],docker有2种映射方式,一种是随机映射,一种是指定映射 提示:生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突 案例1:使用docker启动nginx随机映射配置 [[email protected] ~]# docker run -d -P nginx63cbe30165c8fb2ce7

3.docker容器的数据卷

一.docker容器的数据卷 1.数据卷概念及其作用 2.配置数据卷 创建并启动容器时,使用-v参数设置数据卷 语法: docker run ... -v 宿主机目录(文件):容器内目录(文件) ... 例子: docker run -it --name=c2 -v /root/data:/root/data_container -v /root/data2:/root/data_container2 centos:7 /bin/bash ,一个容器挂载了两个目录 注意: 目录必须是绝对路径 当

docker数据卷管理及网络基础配置

数据卷 数据卷容器 数据卷迁移数据 端口映射 容器间通信 数据卷的管理 当需要查看容器内应用产生的数据或者把容器内数据备份及多个容器数据共享.有两种方式,数据卷以及数据卷容器. 数据卷 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,特性如下: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新不会影响镜像 卷会一直存在,直到没有容器使用 其使用类似与mount操作. 在容器内创建一个数据卷 #docker run -d -P --name web -v /webapp

4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化 *数据卷:容器内数据直接映射到本地主机环境 数据卷的特性: 1)可以在容器之间共享和重用,容器间传递数据变得高效方便 2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作 3)对数据卷的更新不会影响镜像,解耦了应用和数据 4)卷会一直存在,直到没有容器使用,可以安全地卸载它 创建数据卷 docker run -it --name web -v ~/webapp:/w

docker技术剖析--数据卷

防伪码:宁可枝头抱香死,何曾吹落北风中. 前言: 1.想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的