数据卷笔记

使用数据卷

# 语法:主要是这个-v 类似-p
$ docker run -it -v 主机目录:容器内目录

# run一个centos容器,并使用目录挂载
# /home/ceshi:主机home目录下的ceshi文件夹  映射:centos容器中的/home
# 将容器里边的home目录挂载到linux的home下边的ceshi目录
$ docker run -it -v /home/ceshi:/home centos /bin/bash

# docker inspect 容器id 查看是否挂载成功
$ docker inspect 54db68df3d7f
实战 使用Mysql
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
$ 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=root --name mysql01 mysql
查看所有容器的挂载信息
$ dnf install jq # 安装jq工具(一个轻量级的json格式处理工具)
$ docker inspect $(docker ps -aq) | jq '.[] | {Name: .Name, Mounts: .Mounts}' # 查看所有容器的挂载信息

扩展:具名和匿名挂载

#1. 匿名挂载
-v 容器内路径!,这里我们没有写主机的路径,那么它就会自动的生成一个目录
#1-1. 使用命令匿名挂载
$ docker run -d -P --name nginx01 -v /etc/nginx nginx

#1-1. 查看所有volume(卷)的情况  
$ docker volume ls 
DRIVER    VOLUME NAME(卷名字,这个一串乱码其实是真实存在的目录)
local     dd3decdb4e2533d16d216ba19d8797c2ad95b4a2a1b6a90f87eb98bbed3b3758
# 注:这里发现,这种就是匿名挂载,我们在 -v只写了容器内的路径,没有写容器外的路径!

#2. 具名挂载
#2-1. 使用命令具名挂载
$ docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
# 注1:juming-nginx:/etc/nginx,给/etc/nginx命名为juming-nginx,并没有写主机地址
# 注2:说白了就是 -v 卷名:容器内路径

#2-2. 查看一下这个卷
$ docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2021-06-25T20:18:22+08:00",
        "Driver": "local",
        "Labels": null,
        # 下方就是挂载到主机的具体路径
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]

# 三种挂载: 匿名挂载、具名挂载、指定路径挂载
-v 容器内路径               #匿名挂载
-v 卷名:容器内路径         #具名挂载
-v /宿主机路径:容器内路径  #指定路径挂载 docker volume ls 是查看不到的

# 通过 -v 容器内容路径 ro rw 改变读写权限
ro  readonly    # 只读
rw  readwrite   # 可读可写 默认
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

数据卷容器

# 创建docker01
$ docker run -it --name docker01 caoshipeng/centos

# 查看容器docekr01内容
$ ls
bin home lost+found opt run sys var
dev lib media proc sbin tmp volume01
etc lib64 mnt root srv usr volume02
# 不关闭该容器退出
CTRL + Q + P

# 创建docker02: 并且让docker02 继承 docker01
$ docker run -it --name docker02 --volumes-from docker01 caoshipeng/centos:latest

# 查看容器docker02内容
$ ls
bin home lost+found opt run sys var
dev lib media proc sbin tmp volume01
etc lib64 mnt root srv usr volume02

# 可以看到,docker01和02里面的volume文件夹同步了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值