whcoding whcoding
首页
归档
关于
GitHub (opens new window)
首页
归档
关于
GitHub (opens new window)
  • Docker 学习
  • Docker 概述
  • Docker 安装
  • Docker 命令
  • Docker 镜像详解
  • Docker 制作自己的镜像
  • Docker 容器数据卷
    • Dockerfile
    • Docker 网络原理
    • Docker Compose
    • Docker
    whcoding
    2020-09-11
    目录

    Docker 容器数据卷

    # 什么是容器数据卷

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

    # 使用数据卷挂载目录

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

    可以使用 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
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

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

    # 具名挂载和匿名挂载

    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
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    # 具名挂载

    # -v 卷名:容器内路径
    docker run -d -P --name nginx02 -v juming:/etc/nginx nginx
    
    # 再次查看所有的卷
    docker volume ls
    DRIVER              VOLUME NAME
    local               44bf15e29c95e85ab32f4d94c7e2766d0880d602342cf1ac00e3044c1c3415f8
    local               723cc8cf114d9d4bb4ca51092b11fccf2b29d0927739414938a2cde22de4e43e
    local               juming
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

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

    # 使用 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"
        }
    ]
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    • /var/lib/docker/ 目录就是docker的工作目录
    • 在其中 /var/lib/docker/volumes/ 目录就是存放了 docker 的所有挂载卷
    • 进入到目录中就可以看到挂载的目录了 43432-ghe8velcfed.png

    # 总结

    -v 容器内路径            # 匿名挂载
    -v 卷名:容器内路径        # 具名挂载
    -v 宿主机路径:容器内路径   # 指定路径挂载  
    
    1
    2
    3
    #Docker
    上次更新: 2022/08/30, 23:31:20
    Docker 制作自己的镜像
    Dockerfile

    ← Docker 制作自己的镜像 Dockerfile→

    Theme by Vdoing | Copyright © 2018-2023
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式