Docker 容器数据卷用 V 命令添加 | 学习笔记

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习 Docker 容器数据卷用 V 命令添加

开发者学堂课程【Docker 快速入门:Docker 容器数据卷用 V 命令添加】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/616/detail/9402


Docker 容器数据卷用 V 命令添加

容器数据卷就是停止或者关闭以后,对于部分数据的持久化工作,想把保存下来,把保存在容器卷。

相当于外置的活动硬盘。功能主要是做容数据的持久化,容器间数据共享,甚至宿主机和容器之间的数据共享。如何添加相关的容器卷。有两种方法,第一种,直接命令添加,第二种 DockerFile,DockerFile 作为承上启下的知识点,在容器内添加数据卷,有两种方法,一个是命令,第二个是 DockerFile,通过 DockerFile 进行编写。在 docker 基础篇里面 DockerFile 是非常重要的概念。

1、直接命令添加。

(1)命令,docker run -it -v 自己本机通过某个镜像 run -it,有个交互性的终端开启,能够连上各自的容器,在这个命令的基础上,-v 是卷的英文缩写,/宿主机绝对路径目录:/容器内目录,镜像名。

宿机是虚拟器上的 centos_6.8。

image.png

打开根目录,在终端中打开。

image.png

宿主机Host。

image.png

当前在根目录下面,ll,可以看到宿主机的目录,假设在当前宿主机下面,创建myDataVolume 宿主机的目录,

docker run -it -v /myDataVolume:/ 容器内目录,镜像名

在根目录下没有 myDataVolume 目录,如果有了就是 Docker 命令创建的,容器内的目录一样,在 dataVolumeContainer 容器内,

docker run -it -v /myDataVolume:/dataVolumeContainer,镜像名

两个都在根目录下面,只不过 myDataVolume 是在 centos_6.8 宿主机,dataVolumeContainer 在容器里面,镜像生成实例。

container 容器内。

image.png

docker images,有 centos,

docker run -it centos /bin/bash

在容器里面的 centos 实例,

ll 下没有 dataVolumeContainer 文件夹,假设以最原始的方式去登陆,docker 登陆容器,centos 镜像生成的 f6a41a6b3758 容器,根目录下没有准备要写的dataVolumeContaine 文件夹。

exit 退出去,没有时两边都没有,不管是宿主机还是容器,都没有,在主机执行,执行 centos 镜像。

docker run -it -v /myDataVolume:/dataVolumeContainer centos

Docker ps 当前正在运行的容器实验,一个都没有,干干净净的。

在 centos 6.8 根目录下新建 myDataVolume,跟 docke 的 centos 容器根目录下的 dataVolumeContainer 达成连接,一个活动一趴插到笔记本上,开始容器和主机之间数据共享。

目前没有 myDataVolume。

image.png

执行,以 centos 为镜像,生成尾号是 8ede 的容器在 Docker 跑,刷新。

cd 根目录,ll,可以看到 myDataVolume。主机根目录下面没有 myDataVolume,现在新生成了,说明 -v 含有新建的功能,相当于 make dir,主机下面有 myDataVolume,但是里面没内容,登陆进 Docker 里面的容器 pwd,默认根目录,ll,可以看到 dataVolumeContainer,dataVolumeContainer 跟myDataVolume 进行了数据的共享和对接。Bind myDataVolume: V datavolumeContiner,从描述上可以清楚的看到。

(2)查看数据卷是否挂载成功。

再创建一个窗口,docker inspect 以 json 串的形式描述这个容器,以 centos 为例,得到 8ede 容器,docker inspec f89b5db98ede 回车,dataVolumeContainer 数据容器卷,跟 myDataVolume 宿主机绑定,从描述上可以清楚的看到。如果在 docker inspec 容器 id

中看到以下代码,说明绑定成功。Rw 读写,说明可以对 dataVolumeContainer 文件夹读写操作均可。

"Volumes": {

"/ dataVolumeContainer": " / myDataVolume"

},

"VolumesRw": {

" dataVolumeContainer: true

},

" AppArmorProfile":'

"ExecIDs": null,

" HostConfig": {

"Binds": [

' / myDataVolume: /dataVolumeContainer"

],

(3)容器和宿主机之间数据共享。

先看主机 cd myDataVolum,

在宿主机下的 myDataVolum 根目录下,

Touch host.txt 主机键,主机看到,

进入 container,尾号 8ede,

cd dataVolumeContainer 当前在容器下面,

Ll,有 host.txt,vim host.txt,因为 centos 不支持 vim,没有下载,因为是精简版的没有这个功能,vi host.txt,

container update 01 回车,可读可写,

touch container. txt

ll

在容器内,修改了主机的文件,还创建了一个,实现了宿主机和容器内的数据共享,

Cat host.txt

container update 01

(4)容器停止退出后,主机修改后数据是否同步。

exit 是退出停止容器,出门关灯,container 加 p 加 q,出门没关灯。

Docker ps

当前正在运行的容器,容器停止,但是主机还有,

touch host02. txt

主机又修改一次,主机有 vim,主机是 centos6.8 最全的 4g 大小的,不是容器上docker 跑的精简版 200 兆的,要分清,

Host update 01 改同一个文件,主机 host02.txt,如果把容器重新启动,再重新进去,里面会不会有新的数据,上一轮容器已经退出,主机又新建了 host 02,容器重新启动,主机改了能否同步,docker ps 当前没有运行任何实验,上一次运行的是 f89b5qb98ede,

Docker start f89b5qb98ede

Up 3 seconds 上一轮关闭的又重新启动,

Docker attch 重新进入容器,进入 f89b5qb98ede 容器,ll dataVolumeContainer,在 docker 容器里面的 centos 200 兆精简版,

dataVolumeContainer]# pwd

/dataVolumeContainer

dataVolumeContainer]# ll

host02. txt

关了之后只要留着 rdp 和 iof,重启之后又可以做一次全链数据的同步拉起,

Cat host.txt

container update 01

Host update 01

主机改过的都可以,容器停止退出后,主机修改后数据完全同步。

(5)命令(带权限)。

Docker inspect 查看了容器是否挂载成功,rw 是 true,如果 rw 不是 true 是false。有些硬盘写保护,相当于只可以查看,不可以删除硬盘上的东西,而有些硬盘是插上之后,随便干,就把 docker 容器当作活动硬盘,写保护。

docker run -it -v/ 宿主机绝对路径目录:/容器内目录: ro 镱像名

docker run -itI 镜像名

以镜像启动实例,容器数据卷

docker run -it -V /myDataVolume: /dataVqlumeContainer 镜像名

加了数据卷,但是 ro read only 只读,容器内的目录只读不可写。

执行docker run -it -V /myDataVolume: /dataVqlumeContainer :ro

rm-rf myDataVolume/当前目录下

Ll

Total0

文件夹没删除,后面新建会覆盖掉,如果为了怕出问题,可以把dataVqlumeContainer 删除重做,dataVqlumeContainer 里面可读可写,读写是ture,

exit容器停止并退出,回到 cocker ps,当前什么都没有,

再运行命令 docker run -it -V /myDataVolume: /dataVqlumeContainer :ro centos回车,进入容器,

ll 可以看到 dataVqlumeContainer,

Cd dataVqlumeContainer 容器测的 dataVqlumeContainer,在主机中可以看到myDataVolume,ll 总用量 0,也没有。

Touch host.txt 由于加了只读,主机上写了一个 host.txt 是否会同步过去,

Host update 主机修改过,cat host.txt 主机上有这个文件,且文件里面有内容,cat.host.txt 主机上有文件,且文件里面有内容 host update,

cat.host.txt 有,

touch container. txt 在文件夹里面不能新建,不能有写操作,

Vi host.txt 修改

Host update

Container update

强制保存退出,在写的过程中不能打开文件,写操作不支持,容器的数据只允许主机单向的操作传给它,容器只可以查看,但并不能做增删改。

Docker ps

新的容器 id 是 1c95e7d533f0。

docker inspect 1c95e7d533f0

进行了绑定。

Binds":

" / myDataVolume: /dataVolumeContainer: ro"

读写是 false,read-only file system 只可以读,不可以写,这就是用 docker-v 命令添加容器数据卷,达到容器和宿主机中间数据共享的目的。

相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
28天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
200 77
|
10天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
80 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
9天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
2天前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
24 10
|
15天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
41 4
|
30天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
96 3
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
111 7
|
1月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
78 3
|
1月前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
40 2