容器数据卷

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器数据卷

docker的理念

将应用和环境打包乘一个镜像

docker的理念
将应用和环境打包乘一个镜像


例:

 

双向过程,在容器内修改东西,宿主机内数据是同步的,反之

 

 

实战:Mysql安装

问题:Mysql的数据持久化问题

 

 

官方启动方法

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

 

 

 

启动mysql

[root@docker ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

c751aa1f8c74ff58c5551e8bb62f2c90b58bbab90f7044b296a47fbef8569638

 

-d 后台运行

-p 端口映射

-v 卷挂载

-e 环境配置

--name 容器的名字

 

 

 

[root@docker data]# docker volume --help

 

Usage:        docker volume COMMAND

 

Manage volumes

 

Commands:

 create      Create a volume

 inspect     Display detailed information on one or more volumes

 ls          List volumes

 prune       Remove all unused local volumes

 rm          Remove one or more volumes

 

Run 'docker volume COMMAND --help' for more information on a command.

 

 

 

匿名挂载


[root@docker data]# docker run -d -P --name nginx02 -v /etc/nginx nginx
2a51a0e9b09a4358d94784ba13ba6176d14e57672affee96c2f517930a1b351f
 
[root@docker data]# docker volume ls
DRIVER              VOLUME NAME
local               9666e6bffa6452578375314c5e7be127d7819661019c2ad45338ac2be5f0155e
 
 
具名挂载
[root@docker data]# docker run -d -P --name nginx01 -v xiaoming-nginx:/etc/nginx nginx
050eb7bf1fe98d95056e3892a3fdba21e86a277f041ce150cd5fac74205c363c
 
[root@docker data]# docker volume ls
DRIVER              VOLUME NAME
local               xiaoming-nginx
 
docker volume inspect volumename
 ```
真实位置
[root@docker data]# docker volume inspect xiaoming-nginx
[
    {
        "CreatedAt": "2020-11-21T21:07:10-05:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/xiaoming-nginx/_data",
        "Name": "xiaoming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
 
查看容器元数据
docker inspect 容器ID
 
所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
 
通过具名挂载,可以方便找到卷
[root@docker ~]# mkdir ./docker-test-file
[root@docker ~]# cd docker-test-file/
[root@docker docker-test-file]# vim dockerfile01
 
FROM centos
 
VOLUME ["volume01","volume02"]
 
CMD echo "---HHHHHHHHHHAAAAAAAHHHHHHHHH---"
 
CMD /bin/bash
 
 
 
 
[root@docker docker-test-file]# docker build -t caq/centos:1.0 -f ./dockerfile01 ./
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
 ---> 0d120b6ccaa8
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in a73113d7e8a3
Removing intermediate container a73113d7e8a3
 ---> c711b3f50a7d
Step 3/4 : CMD echo "---HHHHHHHHHHAAAAAAAHHHHHHHHH---"
 ---> Running in 1fb3a0ddd9e4
Removing intermediate container 1fb3a0ddd9e4
 ---> 3af9104bbb1a
Step 4/4 : CMD /bin/bash
 ---> Running in 2e403b7bdf30
Removing intermediate container 2e403b7bdf30
 ---> d31239b293f0
Successfully built d31239b293f0
Successfully tagged caq/centos:1.0
 
 
[root@docker docker-test-file]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED              SIZE
caq/centos                      1.0                 d31239b293f0        About a minute ago   215MB
 
 
进入容器会发现建造dockerfiles时挂载的卷,这种挂载属于匿名挂载
 
![]()
 
 
 
![]()
 
 
测试卷同步
[root@docker docker-test-file]# docker run -it d31239b293f0
[root@76da58168b21 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01        volume02
[root@76da58168b21 /]# cd volume01
[root@76da58168b21 volume01]# mkdir 11.22
 
 
如果不指定宿主机文件,那么docker会自动分配给宿主机一个位置,通过docker inspect 容器id 可查看到
[root@docker volumes]# cd /var/lib/docker/volumes/3a29756c59c1f5755802283e024f1fec3fa32ed1f3986f663c0326df48950380/_data
[root@docker _data]# ls
11.22
 
实现容器间卷同步
[root@docker ]# docker run -it --name docker01 caq/centos:1.0 /bin/bash
 
[root@docker _data]# docker run -it --name docker02 --volumes-from docker01 caq/centos:1.0
[root@docker _data]# docker exec -it docker01 /bin/bash
[root@b2bf96149e27 /]# cd volume01
[root@b2bf96149e27 volume01]# ls
docker01
 
 
[root@docker _data]# docker exec -it docker02 /bin/bash
[root@5a79420489d3 /]# cd volume01
[root@5a79420489d3 volume01]# ls
docker01

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
315 5
|
6月前
|
关系型数据库 MySQL Docker
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
本文介绍了Twaver HTML5中数据的批量加载方法,通过使用`box.startBatch()`可以在大量数据加载时提高性能。文章通过示例代码展示了如何在React组件中使用批量加载功能,以减少界面重绘次数并提升效率。
171 2
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
500 5
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
181 1
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
13363 38
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
10月前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
186 13
|
XML 移动开发 JSON
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
本文介绍了Twaver HTML5中的数据容器(DataBox),包括如何进行增删查改操作、遍历数据容器以及判断网元是否存在于数据容器中。DataBox用于管理所有的网元对象,如ElementBox、LayerBox、AlarmBox等,并通过示例代码展示了其常用方法的使用。
139 1
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
|
存储 缓存 Docker
docker中挂载数据卷到容器
【10月更文挑战第16天】
345 3
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第13天】
461 2