前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker入门与实践:两种Docker数据管理方法——数据卷、挂载主机目录

Docker入门与实践:两种Docker数据管理方法——数据卷、挂载主机目录

作者头像
用户1143655
发布于 2022-06-23 06:31:10
发布于 2022-06-23 06:31:10
2.4K00
代码可运行
举报
文章被收录于专栏:全栈之殇全栈之殇
运行总次数:0
代码可运行

Docker入门与实践:两种Docker数据管理方法——数据卷、挂载主机目录

Dcoker容器内管理数据有两种方式:

  1. 数据卷(Volumes);
  2. 挂载主机目录(Bind mounts)。

一、Docker的数据卷

Docker的数据卷是可供一个/多个容器使用的特殊目录,其作用和特性如下所示:

  • (1)可以在容器之间共享和重用;
  • (2)可以被修改,且立即生效;
  • (3)对其进行更新,并不影响镜像;
  • (4)默认情况下,即使容器被删除了,它也会一直存在;

理解:数据卷的使用,类似于Linux中对目录/文件进行挂载(mount)操作。Docker镜像挂载点目录中的文件会被隐藏掉,而数据卷挂载点中的文件则会显示出来。

1.1 Docker数据卷的创建与查看方法

Docker中创建一个数据卷的指令为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume create My_Volume

查看所有数据卷的命令为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume ls

查看某个数据卷信息的指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume inspect My_Volume

下图给出一个示例,其中创建的数据卷My_Volume主要包括的信息有:创建时间、设备类型、标签、挂载点、名字等信息。

1.2 Docker启动一个挂载数据卷的容器

在使用docker run命令启动docker容器时,使用--mount标记想要挂载的数据卷,而且在启动docker容器时,可以一次性挂载多个数据卷

比如,想要创建一个名为web的容器,并加载上面创建的My_Volume数据卷到容器的/webapp目录上。需要注意的是我们本地主机上需要有training/webapp镜像,如果没有也没关系,执行下面的指令会自动从远程docker仓库中下载training/webapp镜像,其命令如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d -P \
    --name web \
    --mount source=My_Volume,target=/webapp \
    training/webapp \
    python app.py

其中,

  • -d表示创建的docker容器以后台方式运行;
  • -P表示将docker容器所有端口发布到主机端口,docker容器将每个公开的端口绑定到主机上一个随机端口,且主机的随机范围在/proc/sys/net/ipv4/ip_local_port_range文件中查看;
  • --name web表示创建的容器名字为web
  • --mount source=My_Volume,target=/webapp表示加载My_Volume数据卷到web容器的/webapp目录上;
  • training/webapp表示创建web容器的镜像;

执行完上面的指令后,我们就创建了一个挂载了My_Volume数据卷的docker容器web

通过下面docker inspect web指令可以查看创建挂载数据卷的容器的详细信息。

1.3 删除Docker数据卷

删除指定数据卷的指令为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume rm 数据卷名

我们还可以使用如下指令删除本地所有数据卷:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume prune

以上面创建的My_Volume数据卷为例,当我们执行docker volume rm My_Volume时,会出现如下所示的错误信息:

这是由于上面创建的webdocker容器以后台形式运行并挂载了My_Volume数据卷,我们首先通过如下命令查看webdocker容器的容器ID

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker container ls -a

然后使用下面的指令删除运行的webdocker容器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker container rm -f c15

最后,在使用docker volume rm My_Volume,就完成了数据卷的删除了。

二、挂载主机目录

同样的,我们可以使用--mount标记来指定一个本地主机的目录到容器中,指令如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d -P \
    --name web \
    --mount type=bind,source=/usr/src/webapp,target=/opt/webapp \
    training/webapp \
    python app.py

注意:我们需要首先在/usr/src目录下创建webapp目录,不然会出现如下所示的错误:

上面的指令与挂载数据卷几乎一样,唯一不同是--mount选项后面的内容。上面指令的--mount type=bind,source=/src/webapp,target=/opt/webapp的作用是将主机的/usr/src/webapp目录加载到容器的/opt/webapp目录上。执行完上面的指令后,我们就创建了一个挂载主机目录/usr/src/webapp为数据卷的webdocker容器,容器ID如下图中红框内所示。

使用docker inspect web可以查看到数据卷/usr/src/webapp的具体信息:

注意:docker inspect web能够显示有关web容器的很多详细信息,包括容器ID、创建时间、路径、状态、镜像、名字、主机配置等等。数据卷信息mount只是其中的一个信息项。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker数据管理
数据卷 ( Data Volumes ) 是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于 Linux 中的 mount 行为 。
海盗船长
2021/12/07
8380
​Docker数据管理
在前面我们详细学习了docker的三大核心概念:镜像、容器和仓库,接下来开始学习如何管理数据。在实际工作中使用docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,此时必然会使用到容器数据管理的各种操作。
啃饼思录
2020/12/29
1.3K0
​Docker数据管理
Docker 学习笔记-数据管理
我们在使用 docker 的时候会将一些数据(例如网站文件、配置文件、数据库文件等)存储在容器中。这样存在一个严重的问题,如果容器出现损坏(例如无法启动,被删除等)那么存储在容器中的数据就会丢失,即使我们进行了容器备份,数据也不可能恢复到故障发生时。如果要解决这个问题,我们就需要用到 docker 的数据管理。在 docker 中数据管理一共有两种方式,分别是数据卷和数据卷容器,下面我们来一一讲解。
喵叔
2020/09/08
5150
02、数据卷(Data Volumes)以及dockefile详解
天蝎座的程序媛
2023/10/17
5370
02、数据卷(Data Volumes)以及dockefile详解
Docker 数据管理介绍
默认容器的数据是保存在容器的可读写层,当容器被删除时其上的数据也会丢失,所以为了实现数据的持久性则需要选择一种数据持久技术来保存数据。官方提供了三种存储方式:Volumes、Bind mounts和tmpfs。前面还介绍了:Docker 服务终端 UI 管理工具
民工哥
2021/03/15
7400
Docker 数据管理介绍
Docker 基础知识 - 使用卷(volume)管理应用程序数据
卷(volumes)是 Docker 容器生产和使用持久化数据的首选机制。绑定挂载(bind mounts)依赖于主机的目录结构,卷(volumes)完全由 Docker 管理。卷与绑定挂载相比有几个优势:
用户8803964
2021/07/05
3.8K1
Docker基础(二)
数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似Linux中的mount行为。
Java阿呆
2020/11/04
4210
Docker实践之07-数据管理
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
编程随笔
2022/09/09
4000
容器中的数据管理
本节学习的内容是如何管理容器中的数据以及容器之间的数据,我们将要学习如下两个主要方式:
字母哥博客
2020/09/23
8630
docker入门篇
docker pull centos       # 从docker仓库下载一个镜像例如:docker pull centos:6.7
保持热爱奔赴山海
2019/09/18
6100
Docker 入门到实战教程(六)Docker数据卷
一. 前言 上一篇介绍到如何构建镜像以及镜像管理,不知道大家学到现在有没有疑问?比如我运行web服务产生的日志,我如何在宿主机上看到?我想安装mysql或者redis等,配置文件如何配置,可以进到容器
小东啊
2020/07/23
1.6K0
Docker 入门到实战教程(六)Docker数据卷
【Docker入门】数据卷管理
在创建 docker 的镜像和容器后,还需要对容器进行数据管理,以便能与主机、不同容器之间进行交换数据。
参谋带个长
2024/01/04
5170
Docker学习——数据管理、使用网络(三)
这一章介绍如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:
wuweixiang
2018/12/06
5650
Docker数据挂载
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
CodingDiray
2019/11/28
2.9K0
[入门] Docker容器数据储存和转移
容器和镜像之间的主要区别是顶部的可写层。所有对容器添加新的或修改现有数据的内容都存储在该可写层中。当容器被删除时,可写层也被删除。底层镜像保持不变。
宣言言言
2019/12/15
2K0
docker 数据管理
docker镜像被存储在一系列的只读层,当我们开启一个容器,docker读取只读镜像并添加一个读写层在顶部,如果正在运行的容器修改了现有的文件,该文件将被拷贝出底层的只读层到最顶层的读写层,在读写层中的旧版本文件隐藏于该文件之下,但并没有被破坏,它仍然存在于镜像一下,当docker的容器被删除时,然后重新启动镜像时,将开启一个没有任何更改的新的容器,这些更改会丢失,为了能够保存数据以及共享容器间的数据,docker提出了volumes的概念,volumes可以是目录或者文件,它们是外部默认的联合文件系统或者是存在与宿主文件系统正常的目录和文件。
dogfei
2020/07/31
9170
Docker数据共享与持久化
本文介绍如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:
Cyylog
2020/08/19
7170
Docker数据管理与挂载管理
数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
踏歌行
2020/10/15
7070
Docker入门-数据挂载
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
小码农薛尧
2019/08/21
1.4K0
实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作
王小雷
2018/01/02
2.3K0
实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作
相关推荐
Docker数据管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验