怎么免费做网站推广,wordpress全屏首页,seo效果分析,璧山网站建设目录
1、前言
2、Docker实现数据管理的方式
2.1、数据卷#xff08;Data Volumes#xff09;
2.2、数据卷容器#xff08;Data Volume Containers#xff09;
3、简单示例
3.1、数据卷示例
3.2、数据卷容器示例 1、前言
在生产环境中使用 Docker#xff0c;一方面…目录
1、前言
2、Docker实现数据管理的方式
2.1、数据卷Data Volumes
2.2、数据卷容器Data Volume Containers
3、简单示例
3.1、数据卷示例
3.2、数据卷容器示例 1、前言
在生产环境中使用 Docker一方面需要对数据进行保存或者在多个容器之间进行数据共享另一方面在 Docker 的容器被删除后并不会保留容器的状态信息。那么如何实现信息的持久化呢这必然涉及容器的数据管理。
2、Docker实现数据管理的方式
在 Docker 容器中实现数据管理或者说实现数据的持久化主要有以下两种方式
2.1、数据卷Data Volumes
数据卷本质上是一个挂载目录类似使用 Linux的 mount 命令挂载的目录。数据卷可以供容器使用并且可以在不同的容器之间共享和重用数据卷。对数据卷的修改会立即生效。数据卷与容器彼此独立对数据卷的更新不会影响镜像。 即使容器被删除数据卷默认也会一直存在直到数据卷被删除为止。 在Docker 中可以使用-mount和-v 两种方式给容器挂载数据卷。 2.2、数据卷容器Data Volume Containers
数据卷容器是一种特殊的容器用来维护数据卷。它可以在多个容器之间共享数据信息。利用数据卷容器可以很方便地完成数据迁移。 3、简单示例
3.1、数据卷示例
可以使用-mount或-v两种方式给容器挂在数据卷。 -mount和-v的区别在于-mount如果宿主机目录不存在会直接报错而-v会自动创建。 1创建一个数据卷“myvolume”。
docker volume create myvolume
创建后查看所有数据卷。
docker volume ls 也可以通过inspect命令查看数据卷详细信息。
docker inspect myvolume 2启动一个容器并使用数据卷。
这里使用Nginx镜像创建一个容器名称为mynginx端口映射为1234:80。
docker run -d -p 1234:80 --namemynginx --mount typevolume,sourcemyvolume,target/usr/share/nginx/html/ nginx
然而我这里却提示无法识别--mount通过docker run --help并没有发现--mount命令。猜测跟docker版本有关系我这里使用的是docker 1.13.0版本。网上找了一圈之后发现需要docker-ce 75.06以上版本才可以。这里大家可以自行验证。 参数说明
--mount 指定在容器启动时挂载数据卷。type指定数据卷挂载的方式。有以下几个参数 volume。普通数据卷默认的type类型。其函数映射到主机“ar/lib/docker/volumes”目录下。bind。绑定数据卷。使用这种类型可以在挂载数据卷时将其映射到主机的指定目录下。tmpfs。临时数据卷只将容器的目录挂载到宿主机的内存中。一般在实际环境中不会使用这种方式。source指定宿主机上的目录或者数据卷。这里使用的是第(1)步所创建的数据卷myvolume。target将容器中的“/usr/share/nginx/htm/”目录挂载到宿主机。
3也可以使用-v参数进行挂载。
使用-v我们将宿主机/home/data目录挂载到容器内的/data/mydatavolume目录下。
# --privilegedtrue 不加这个容器内使用ls会提示权限问题
docker run -it --privilegedtrue -v /home/data/:/data/mydatavolume centos /bin/bash
容器内 宿主机 可以看到目录已经成功挂载且当你在宿主机修改的内容会直接同步到容器内部。
-v命令格式为
-v 宿主机目录容器内部目录
3.2、数据卷容器示例
数据卷容器也是一个容器专门用来提供数据卷供其他容器挂载。如果用户需要在多个容器之间共享一些持续更新的数据则最简单的方式是使用数据卷容器。
1创建数据卷容器。
创建一个数据卷容器 dbdata并在其中创建一个数据卷挂载到“/dbdata”下
docker run -it -v /dbdata --name dbdata centos
2数据卷容器内生成一些文件。
echo hello world a.txt 3创建一个容器container1并使用--volumes-from挂载dbdata容器的数据卷。
docker run -it --volumes-from dbdata --namecontainer1 centos 在容器container1中可以查看目录/dbdata其中已经有了刚生成的a.txt 4同理可以继续建容器container2并使用--volumes-from挂载dbdata容器的数据卷。
docker run -it --volumes-from dbdata --namecontainer2 centos
并创建b.txt 5在容器container1中也能看到该数据。 从结果可以看出两个容器container1和container2挂载了同一个数据卷并且数据卷都在相同的、dbdata目录下。这样容器的任何一方在该目录下写入其他容器也都可以看到。这样很方便的实现了不同容器之间的数据共享并且利用这种方式很容易的实现容器数据的迁移。