06. 管理Docker容器数据

这篇具有很好参考价值的文章主要介绍了06. 管理Docker容器数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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 两种方式给容器挂载数据卷。

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

2.2、数据卷容器(Data Volume Containers)

数据卷容器是一种特殊的容器,用来维护数据卷。它可以在多个容器之间共享数据信息。利用数据卷容器可以很方便地完成数据迁移。

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

3、简单示例

3.1、数据卷示例

可以使用-mount或-v两种方式给容器挂在数据卷。

-mount和-v的区别在于,-mount如果宿主机目录不存在会直接报错,而-v会自动创建。

1)创建一个数据卷“myvolume”。

docker volume create myvolume

创建后,查看所有数据卷。

docker volume ls

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

也可以通过inspect命令查看数据卷详细信息。

docker inspect myvolume

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

2)启动一个容器,并使用数据卷。

这里使用Nginx镜像创建一个容器,名称为mynginx,端口映射为1234:80。

docker run -d -p 1234:80 --name=mynginx --mount type=volume,source=myvolume,target=/usr/share/nginx/html/ nginx

然而我这里却提示无法识别--mount,通过docker run --help并没有发现--mount命令。猜测跟docker版本有关系,我这里使用的是docker 1.13.0版本。网上找了一圈之后发现,需要docker-ce 75.06以上版本才可以。这里大家可以自行验证。

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

参数说明:

  1. --mount :指定在容器启动时挂载数据卷。
  2. type:指定数据卷挂载的方式。有以下几个参数:
    1. volume。普通数据卷,默认的type类型。其函数映射到主机“ar/lib/docker/volumes”目录下。
    2. bind。绑定数据卷。使用这种类型可以在挂载数据卷时将其映射到主机的指定目录下。
    3. tmpfs。临时数据卷,只将容器的目录挂载到宿主机的内存中。一般在实际环境中不会使用这种方式。
  3. source:指定宿主机上的目录或者数据卷。这里使用的是第(1)步所创建的数据卷myvolume。
  4. target:将容器中的“/usr/share/nginx/htm/”目录挂载到宿主机。

3)也可以使用-v参数进行挂载。

使用-v我们将宿主机/home/data目录挂载到容器内的/data/mydatavolume目录下。

# --privileged=true 不加这个,容器内使用ls会提示权限问题
docker run -it --privileged=true -v /home/data/:/data/mydatavolume centos /bin/bash

容器内:

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

宿主机:

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

可以看到目录已经成功挂载,且当你在宿主机修改的内容,会直接同步到容器内部。

-v命令格式为:

-v 宿主机目录:容器内部目录

3.2、数据卷容器示例

数据卷容器也是一个容器,专门用来提供数据卷供其他容器挂载。如果用户需要在多个容器之间共享一些持续更新的数据,则最简单的方式是使用数据卷容器。

1)创建数据卷容器。

创建一个数据卷容器 dbdata,并在其中创建一个数据卷挂载到“/dbdata”下:

docker run -it -v /dbdata --name dbdata centos

2)数据卷容器内生成一些文件。

echo hello world > a.txt

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

3)创建一个容器container1,并使用--volumes-from挂载dbdata容器的数据卷。

docker run -it --volumes-from dbdata --name=container1 centos

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

在容器container1中可以查看目录/dbdata,其中已经有了刚生成的a.txt:

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

4)同理可以继续建容器container2,并使用--volumes-from挂载dbdata容器的数据卷。

docker run -it --volumes-from dbdata --name=container2 centos

并创建b.txt:

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

5)在容器container1中也能看到该数据。

06. 管理Docker容器数据,云原生,docker,容器,运维,linux,云原生

从结果可以看出两个容器container1和container2挂载了同一个数据卷,并且数据卷都在相同的、dbdata目录下。这样容器的任何一方在该目录下写入,其他容器也都可以看到。这样很方便的实现了不同容器之间的数据共享,并且利用这种方式很容易的实现容器数据的迁移。文章来源地址https://www.toymoban.com/news/detail-619292.html

到了这里,关于06. 管理Docker容器数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 尚硅谷Docker实战教程-笔记06【Docker容器数据卷】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】 尚硅谷Docker实战教程-笔记02【安装docker、镜像加速器配置

    2024年02月16日
    浏览(32)
  • 云原生系列之docker的容器管理实战

    之前我们已经探讨过了docker的镜像,看了下时间,距离上次介绍容器的镜像已经过去两个月了, 如果你已经忘记了,可以直奔专栏:容器管理 从今天开始,我们要探讨docker 的容器了,docker的容器都是从镜像开始创建的,涉及到的操作有: 创建容器,停止容器,进入容器,删

    2024年02月10日
    浏览(37)
  • 【云原生】Docker中容器管理常用所有命令

    1.docker 容器创建流程   2.容器运行本质 Docker 容器存在的意义就是为了运行容器中的应用,对外提供服务,所以启动容器的目的就是启动运行该容器中的应用。容器中的应用运行完毕后,容器就会自动终止。所以如果不想让容器启动后立即终止运行,则就需要使容器应用不能

    2024年02月14日
    浏览(32)
  • 【云原生】Docker的端口映射、数据卷、数据卷容器、容器互联

    目录 一、端口映射(相当于添加iptables的DANT) 二、数据卷创建(宿主机目录或文件挂载到容器中) 三、数据卷容器(多个容器通过同一个数据卷容器为基点,实现所有容器数据共享) 四、容器互联(可以通过容器名称或连接别名通信) 在启动容器的时候,如果不指定对应

    2024年01月25日
    浏览(36)
  • 【云原生】第八篇--Docker容器数据持久化存储机制

    物理机或虚拟机数据持久化存储 由于物理机或虚拟机本身就拥有大容量的磁盘,所以可以直接

    2023年04月09日
    浏览(32)
  • 【云原生|Docker】06-dokcerfile详解

    目录 前言 Dockerfile基础示例   Dockerfile简介 1.  Dockerfile概念  2.  Dokcer镜像分层理解 ​3.  Doker build构建原理  Dockerfile参数解析  1.  Dokcerfile组成  2.  指令说明  2.1  FROM引入基础镜像 2.2  LABEL 2.3   ENV 2.4  RUN 2.5  COPY 2.6  ADD 2.7  VOLUME  2.8  EXPOSE 2.9  WORKDIR  2.10  USER  2.1

    2023年04月10日
    浏览(24)
  • 小白到运维工程师自学之路 第六十二集 (docker持久化与数据卷容器)

    一、概述 Docker持久化是指将容器中的数据持久保存在主机上,以便在容器重新启动或迁移时不丢失数据。由于Docker容器是临时和可变的,它们的文件系统默认是易失的,这意味着容器中的任何更改或创建的文件都只存在于此容器的生命周期内。但是,在许多场景中,我们希望

    2024年02月14日
    浏览(29)
  • Docker镜像、容器、仓库及数据管理

    使用docker pull命令,使用docker search命令可以搜索远端仓库中共享的镜像。 使用docker run [OPTIONS] IMAGE [COMMAND] [ARG...]命令,如:docker run --name ubuntu_test --rm -it ubuntu:test /bin/bash,其中选项如下: --name 指定容器名。 --rm 表示容器退出后将其删除。 -t选项让Docker分配一个伪终端并绑定

    2024年02月09日
    浏览(33)
  • docker配置文件挂载(容器数据管理)

    在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。 这就是因为容器与数据(容器内文件)耦合带来的后果。 要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。 数据卷(volume) 是一个虚拟目录,指向宿

    2024年02月15日
    浏览(47)
  • Docker容器:docker数据管理、镜像的创建及dockerfile案例

    因为数据写入后如果停止了容器,再开启数据就会消失,使用数据管理的数据卷挂载,实现了数据的持久化,重启数据还会存在;还有一种方式,容器之间共享文件即相当于有个备份,也会解决停止容器后数据消失的问题。 管理 Docker 容器中数据主要有两种方式:数据卷(

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包