方式一:指定路径挂载 -v,只能在run 命令下使用-v参数
docker run -it -d -p 3344:80 -v 主机目录:容器内目录 -v 主机目录:容器内目录 # 测试1 nginx 在启动时挂载需要的目录,可以同时挂载多个,挂载后容器中的目录会被清空 docker run -d -p 3344:80 -v /home/docker:/usr/share/nginx/html --name nginx_v nginx # 测试2 mysql docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 # 启动之后通过 docker inspect 容器ID 查看是否挂载成功 "Mounts": [ { "Type": "bind", "Source": "/home/mysql/conf", "Destination": "/etc/mysql/conf.d", "Mode": "", "RW": true, "Propagation": "rprivate" } ], # Mounts中有类似这样的数据,说明挂载成功
方式二:匿名挂载
-v 后面直接填写容器内部的文件目录 则该方式为匿名挂载。
会在docker 所在的宿主机对应的目录的下生成随机不重复的文件名,目录位置:
docker run -d -P —name nginx01 -v /etc/nginx nginx
方式三:具名挂载(常用)
-v 后面填写挂载目录名:容器内的目录 则该方式为具名挂载。
如果不指定目录名,则还是在/var/lib/docker/volumes/目录下生成挂载目录
docker run -d -p 3344:80 --name nginx02 -v juming_nginx:/etc/nginx nginx
查看具名或匿名已挂载的目录
docker volume ls
查看挂载卷
docker volume inspect mypashname
在挂载时使用 ro rw 权限的含义
docker run -d -p 3344:80 --name nginx02 -v juming_nginx:/etc/nginx:ro nginx # 设置只读,只能通过容器外部修改,内容不能修改 docker run -d -p 3344:80 --name nginx02 -v juming_nginx:/etc/nginx:rw nginx # 默认的权限 可读写