第三节 容器数据卷

指定路径挂载

###### 

​```
-v 宿主机路径:容器里面路径  #宿主机路径是绝对路径
​```

docker run -it -v /data/tomcat:/home/tomcat -p 8080:8080 tomcat /bin/bash  #启动tomcat容器,将宿主机的/data/tomcat绑定到容器里面

mysql实践

# 启动mysql
[root@amumu data]# docker run -d -p 3310:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1qaz@WSX --name=mysql01 mysql:5.7
16e2fce0328b4d037fce4eecfbbf2f3992b69d931870d3b5e74f3d1f49603702
[root@amumu data]# 
-d:后台运行
-v:目录映射,将容器路径/var/lib/mysql路径挂载在宿主机的/data/mysql/data下
-p:端口映射 # -P会自动映射端口
--name:指定容器名字
-e:指定环境变量

二、具名挂载与匿名挂载

具名挂载:-v 卷名:容器内路径  #卷名前面不能有斜杠/,否则会认为是目录
[root@amumu mysql]# docker run -d -P -v juming:/etc/nginx --name=nginx01 nginx
f5cc7353180ab5230108c3f098fc25bb80fee5fe958f3bb49f9814ab33b37ab1
[root@amumu mysql]# 
[root@amumu _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@amumu _data]# pwd
/var/lib/docker/volumes/juming/_data  #这个目录下的内容就是docker容器中/etc/nginx对应的目录内容


匿名挂载:-v 容器内路径
[root@amumu _data]# docker run -d -P -v /etc/nginx --name=nginx02 nginx       
1e62c3c30799109b5783359ad2e0f5fcca451e76a8caecd31f12f5038e283664
[root@amumu _data]# docker volume ls   #这个命令查看卷
DRIVER    VOLUME NAME
local     3dc591db1fedfaeee6b75a7ca474f18e19e72cd0a81c3a9443a29d7797645c9a  #这个则为匿名卷
local     juming  #前面设置的具名卷 
[root@amumu _data]# cd /var/lib/docker/volumes/
[root@amumu volumes]# ls
3dc591db1fedfaeee6b75a7ca474f18e19e72cd0a81c3a9443a29d7797645c9a  backingFsBlockDev  juming  metadata.db
[root@amumu volumes]# 

拓展

 ro:只读
 rw:可读可写
 docker run -d -P -v zzl:/etc/nginx:ro --name=nginx03 nginx  # 只读模式,/etc/nginx里面的文件只能通过在宿主机的路径下进行修改,不能在容器中进行修改
 docker run -d -P -v zzlname:/etc/nginx:rw --name=nginx03 nginx #可读可写,默认情况是这个模式
  
  例子:
 [root@amumu volumes]# docker run -d -P -v zzl:/etc/nginx:ro --name=nginx01 nginx 
9a826326576891516aa8fb639e238cbc9a359b7f73d26ace57fc17b84ec193b8
 [root@amumu volumes]# docker exec -it 9a8263265768 /bin/bash
root@9a8263265768:/# cd /etc/nginx/
root@9a8263265768:/etc/nginx# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
root@9a8263265768:/etc/nginx# touch a.txt
touch: cannot touch 'a.txt': Read-only file system  #进入容器后创建文件失败,表明目录/etc/nginx只有可读的权限
root@9a8263265768:/etc/nginx# 
# 退出容器,在宿主机的卷zzl下面创建文件
[root@amumu volumes]# cd zzl/_data/
[root@amumu _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@amumu _data]# touch zzl.py
[root@amumu _data]# pwd
/var/lib/docker/volumes/zzl/_data
[root@amumu _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf  zzl.py

猜你喜欢

转载自blog.csdn.net/qq_20663229/article/details/116838436