Docker容器卷
-
介绍
容器内部的目录映射到宿主机的目录,不属于联合文件系统,独立于容器。
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
参考截图
使用
docker inpsect 容器ID
命令,其中一部分截图 -
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
[client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8
-
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
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。