什么是容器数据卷

  • docker的理念, 将应用和环境打包成一个镜像, 如果应用产生数据, 那么我们删除容器数据就会丢失.
  • 所以我们需要数据可以持久化, 比如 mysql的数据可以存储在本地! 并且容器之间可以数据共享, 这就是数据卷技术.

使用数据卷挂载目录

# 命令中 -v 就是在挂载目录 主机目录:容器内目录
docker run -it -v /home/test:/home centos /bin/bash

可以使用 docker inspect 命令 查看挂载

50425-oaf25b0xjpe.png

mysql容器实战

# 命令详解
# -d 后台运行
# -p 端口映射 宿主机端口:容器内端口
# -v 数据卷挂载
# -e 环境配置
# --name 容器名字

docker run -d -p 3333:3306 -v /home/docker/mysql/conf:/etc/mysql/conf.d -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name my-mysql mysql

假设我们将容器删除, 就会发现挂载到本地的数据劵依旧没有丢失, 这就实现了容器数据化持久功能

具名挂载和匿名挂载

docker的挂载方式有三种 具名挂载和匿名挂载 指定路径挂载, 上面mysql实战中就使用了指定路径挂载

匿名挂载

# -v 直接写容器内路径

docker run -d -P --name nginx01 -v /etc/nginx nginx

# 启动容器后, 可以使用 docker volume ls 命令来查看所有卷
docker volume ls
DRIVER              VOLUME NAME
local               44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8
local               723cc8cf114d9d4bb4ca51092b11fccf2b29d0927739414938a2cde22de4e43e

具名挂载

# -v 卷名:容器内路径
docker run -d -P --name nginx02 -v juming:/etc/nginx nginx

# 再次查看所有的卷
docker volume ls
DRIVER              VOLUME NAME
local               44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8
local               723cc8cf114d9d4bb4ca51092b11fccf2b29d0927739414938a2cde22de4e43e
local               juming

查看匿名和具名挂载的目录

# 使用 docker volume inspect 卷名来查看挂载的目录

docker volume  inspect 44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8

[
    {
        "CreatedAt": "2020-09-11T05:49:44Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8/_data",
        "Name": "44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8",
        "Options": null,
        "Scope": "local"
    }
]
  • /var/lib/docker/ 目录就是docker的工作目录
  • 在其中 /var/lib/docker/volumes/ 目录就是存放了 docker 的所有挂载卷
  • 进入到目录中就可以看到挂载的目录了
    43432-ghe8velcfed.png

总结

-v 容器内路径            # 匿名挂载
-v 卷名:容器内路径        # 具名挂载
-v 宿主机路径:容器内路径   # 指定路径挂载  

标签: Docker

添加新评论