Docker(五)数据管理
docker的镜像是只读的,虽然依据镜像创建的容器可以进行操作,但是我们不能将数据保存到容器中,因为容器会 随时关闭和开启。所以数据卷和数据卷容器就是把数据保存下来
数据卷使用
1.目录
-
命令格式:docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]
-
在本机创建文件:/tmp/lgy_T/T1.txt
-
启动容器,挂载数据卷:sudo docker run -itd --name test1 -v /tmp/lgy_T:/tmp/lgy_T nginx
把本地的
/tmp/lgy_T
文件夹,挂载到容器中的/tmp/lgy_T
,冒号前面为本机,后面为容器,容器没有的会自动创建 -
进入容器进行验证:sudo docker exec -it d3d5ea511288 /bin/bash
2.文件
-
命令格式:docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称] [命令(可选)]
-
使用例子:sudo docker run -itd --name test02 -v /tmp/lgy_T/T1.txt:/tmp/lgy_T/T2.sh nginx
数据卷容器
1、创建数据卷容器
2、其他容器挂载数据卷容器:数据卷容器不启动
-
创建一个数据卷容器
命令:docker create -v [容器数据卷目录] --name [容器名字] [镜像名称] [命令(可选)]
例子:docker create -v /data --name v-test nginx -
创建两个容器,同时挂载数据卷容器
docker run --volumes-from c5ce01cb14102b0787be35e2fb6c4faf5cdeff99bb7d03a5600f65bf4b5de8dd -tid --name vc-test1 nginx /bin/bash
docker run --volumes-from c5ce01cb14102b0787be35e2fb6c4faf5cdeff99bb7d03a5600f65bf4b5de8dd -tid --name vc-test2 nginx /bin/bash
-
进入容器1和容器2,创建文件
docker exec -it vc-test1 /bin/bash
echo “123” >/data/123-t1.txtdocker exec -it vc-test2 /bin/bash
echo “123” >/data/123-t2.txt -
则在容器1和2均能够看到各自创建的文件
-
宿主机没有保存到数据
-
结论:容器间可以共享数据卷容器,不过数据是保存在数据卷内,并没有保存到宿主机的文件目录中