• 介绍

    容器内部的目录映射到宿主机的目录,不属于联合文件系统,独立于容器。

    docker run -d -p 5000:5000 --privileged -v 宿主机绝对路径:容器内绝对路径:读写模式 --volumes-from 其他容器ID 镜像ID

    参数介绍

    • --privileged=true 开始特权模式

      使容器内的root真正拥有了root权限

    • rw|ro 设置读写模式,缺省情况下为rw

      • rw 读写
      • ro 仅读
    • --volumes-from 其他容器ID 容器卷继承

  • 特点

    • 数据卷可在容器之间共享或重用数据
    • 卷中的更改可以直接实时生效,爽
    • 数据卷中的更改不会包含在镜像的更新中
    • 数据卷的生命周期一直持续到没有容器使用它为止
  • 测试

    #宿主机 创建容器
    [root@localhost ~]# docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=my_ubuntu2 ba6acccedd29
    
    #创建完成后,进入到了容器
    root@3f2d1561493e:/# cd /tmp/docker_data
    root@3f2d1561493e:/tmp/docker_data# ls
    root@3f2d1561493e:/tmp/docker_data# 
    #宿主机环境内
    #在/tmp/host_data创建hello.txt
    vim /tmp/host_data/hello.txt
    #容器环境内
    root@3f2d1561493e:/tmp/docker_data# ls /tmp/docker_data
    hello.txt
    root@3f2d1561493e:/tmp/docker_data# cat hello.txt
    hello world!2023-02-24

    参考截图

    image-20230224202631196

    image-20230224202652616

    使用docker inpsect 容器ID命令,其中一部分截图

    image-20230224203311613

  • Mysql使用容器卷

    docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

    image-20230225151229905

    [client]
    default_character_set=utf8
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8

    image-20230225151252124

  • Redis使用容器卷

    mkdir -p /app/redis
    mkidr /app/redis/data
    touch /app/redis/redis.conf

    最重要一点,把daemonize设置为no,否则会与-d冲突,无限重启

    最后运行

    docker run -p 63790:6379 --name=my_redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf  -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf