Docker 数据卷和数据卷容器
2023-09-27 14:29:11 时间
1.本节课主要讲解如何在Docker内部及容器之间管理数据。
容器中管理数据主要有两种方式:
数据卷(Data volumes)
数据卷容器(Data volume containers)
2.数据卷:是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
a.数据卷可以在容器之间共享和重用
b.对数据卷的修改会立马生效
c.对数据卷的更新,不会影响镜像
d.卷会一直存在,直到没有容器使用
*数据卷的使用,类似于 Linux 下对目录或文件进行 mount。
3.创建数据卷
$ docker run -idt -P -v /webapp my/centos:v888 /bin/bash ##a、/webapp为创建的数据卷 b、my/centos:v888为镜像 c、-P外网到容器的一个硬射的IP
ecde369d5c9ca75eaf394caaa1f0ce5d63e1323739c657595bd01f68d5d2d304
$ docker attach ecde369d5c9ca75eaf394caaa1f0ce5d63e1323739c657595bd01f68d5d2d304 ##进入守护状态运行的容器中
$ docker run -idt -P --name web1 -v /webapp my/centos:v888 /bin/bash ##/webapp上面创建的容器,web1和/webapp目录是共享的,但对数据卷的更新,不会影响镜像
01808bde8cba1c5dab720043af7c607625b5b769cac8133c09aef02c246b6312
$ docker attach web1 ##通过web1名称进入守护状态运行的容器中
-v表示创建一个数据卷并且挂载到容器里。
--name指定容器的名称
-d是指守护状态下运行(daemon)
启动之后,使用docker attach命令进入守护状态运行的容器中
除此之外,还可以挂载宿主机的一个目录来映射到容器里面作为数据卷
$ docker run -idt -P --name web2 -v /home/xm6f/dev/test:/opt/docker my/centos:v888 /bin/bash
d0aeebbcd269143e1345ace90992d21c5d9687375f39524a9ed25d6dd2a5b54f
$ docker attach web2
表示宿主机的目录/home/xm6f/dev/test映射到容器中的/opt/docker目录。
你会发现宿主机/home/xm6f/dev/test目录创建的文件跟容器/opt/docker目录的文件一样。
docker挂载的数据卷默认是可读可写的,若要指定为只读,可以加权限限制:ro
$ docker run -idt -P --name web3 -v /home/xm6f/dev/test:/opt/docker:ro my/centos:v888 /bin/bash
也可以挂载单个文件到容器
docker run -idt -P --name web4 -v ~/.bash_history:/.bash_history my/centos:v888 /bin/bash
4.数据卷容器:是一个正常的容器,专门用来提供数据卷供其他容器挂载
建立数据卷容器:
$ docker run -d -v /database --name db my/centos:v888 echo database
$ docker logs db
在其他容器中使用--volumes-from挂载db容器中的数据卷
$ docker run -idt -v /aaa --name bbb my/centos:v888 /bin/bash
$ docker run -idt --volumes-from bbb --name ccc my/centos:v888 /bin/bash
可以看到数据卷容器,在多个容器中挂载之后是数据共享的。
5.数据卷不会被自动删除,要删除一个数据卷,必须在删除最后一个挂着该数据卷的容器是指定-v参数,如下
docker rm -v 数据卷名字
相关文章
- 【Docker 那些事儿】容器数据卷的本手
- docker中创建MySQL及在外部使用Navicat连接***
- oppoJava面试!docker开机启动容器内程序
- Docker 容器镜像删除
- Docker registry 镜像仓库
- 【Docker】Dockerfile 之 ENV
- 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
- Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)
- Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)
- 万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)
- overlay 是如何隔离的?- 每天5分钟玩转 Docker 容器技术(53)
- Docker容器进入-命令行只显示-bash-4.1#
- 【Docker】利用数据卷容器来备份、恢复、迁移数据卷
- 5.docker容器数据卷
- 容器如何访问外部世界?- 每天5分钟玩转 Docker 容器技术
- 初识docker-管理容器数据
- Docker 安装 MySQL
- 在Windows上弄一个redis的docker容器
- 容器存储架构比较:Kubernetes、Docker和Mesos Compare
- 为什么 Docker 容器中的进程不应该以 root 身份运行
- 如何通过 SSH 连接到 Docker 容器