1.Docker 下的数据管理。
数据卷
数据卷
是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
-
数据卷
可以在容器之间共享和重用 -
对
数据卷
的修改会立马生效 -
对
数据卷
的更新,不会影响镜像 -
数据卷
默认会一直存在,即使容器被删除
1.在容器内创建一个数据卷。
(1) 在启动 tomcat 服务时可以为该容器创建一个数据卷,来存放工程文件。创建命令为:
sudo docker run –d –P --name web –v/webapp tomcat
在该命令里-v 标记可以在容器里创建一个数据卷。可以多次使用-v 标记创建多个数据卷。
-d 表示后台运行,返回ID。
--name 命名容器。
(2) 使用本地目录挂载到容器里作为数据卷。例如执行下面命令:
sudo docker run -d -P -v <主机路径>:<容器路径> tomcat
上面命令加载主机的目录到容器的目录。该功能在进行测试时十分方便,比如用户可以放置一些程序或者数据到本地目录中,然后在容器里运行和使用。这里要注意本地目录的路径必须是绝对路径,如果本地目录不存在,Docker 会自动创建。
(3)-v 也可以从主机挂载单个文件到容器里作为数据卷。
sudo docker run --rm -it -v $HOME/.bash_history:/.bash_history ubuntu:16.04 bash
这样就把本地的.bash_history 文件挂载到容器里,可以记录容器输入命令的历史了。
( 4 ) docker 挂载数据卷的默认权限是读写(rw),用户也可以通过,ro指定为只读,加了 ro 之后,容器挂载的数据卷的数据就无法修改了。例如:
sudo docker run --name my-nginx -v <source>:<target>:ro -d nginx
2.数据卷容器。
执行命令:
sudo docker run -it -v /dbdata --name dbdata ubuntu:16.04
查看dbdata的目录
root@a892ff09ae51:/# ls
bin dbdata etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
然后可以在其他容器里使用—volumes-from 来挂载 dbdata 容器中的数据卷,例如创建 db1 和 db2 两个容器,并从 dbdata 容器挂载数据卷:
sudo docker run –it -–volumes-from dbdata -–name db1 ubuntu:16.04
sudo docker run –it -–volumes-from dbdata -–name db2 ubuntu:16.04
两个容器 db1 和db2 都挂载一个数据卷到相同的/dbdata 目录。三个容器任何一个在该目录下写入,其他容器都可以看到。如下图所示。
3.删除数据卷。
用rm 命令
sudo docker rm <volume-name>