欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第三节 容器数据卷

程序员文章站 2024-03-11 17:37:31
...

指定路径挂载

###### 

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

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

mysql实践

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

二、具名挂载与匿名挂载

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


匿名挂载:-v 容器内路径
[[email protected] _data]# docker run -d -P -v /etc/nginx --name=nginx02 nginx       
1e62c3c30799109b5783359ad2e0f5fcca451e76a8caecd31f12f5038e283664
[[email protected] _data]# docker volume ls   #这个命令查看卷
DRIVER    VOLUME NAME
local     3dc591db1fedfaeee6b75a7ca474f18e19e72cd0a81c3a9443a29d7797645c9a  #这个则为匿名卷
local     juming  #前面设置的具名卷 
[[email protected] _data]# cd /var/lib/docker/volumes/
[[email protected] volumes]# ls
3dc591db1fedfaeee6b75a7ca474f18e19e72cd0a81c3a9443a29d7797645c9a  backingFsBlockDev  juming  metadata.db
[[email protected] 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 #可读可写,默认情况是这个模式
  
  例子:
 [[email protected] volumes]# docker run -d -P -v zzl:/etc/nginx:ro --name=nginx01 nginx 
9a826326576891516aa8fb639e238cbc9a359b7f73d26ace57fc17b84ec193b8
 [[email protected] volumes]# docker exec -it 9a8263265768 /bin/bash
[email protected]:/# cd /etc/nginx/
[email protected]:/etc/nginx# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[email protected]:/etc/nginx# touch a.txt
touch: cannot touch 'a.txt': Read-only file system  #进入容器后创建文件失败,表明目录/etc/nginx只有可读的权限
[email protected]:/etc/nginx# 
# 退出容器,在宿主机的卷zzl下面创建文件
[[email protected] volumes]# cd zzl/_data/
[[email protected] _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[[email protected] _data]# touch zzl.py
[[email protected] _data]# pwd
/var/lib/docker/volumes/zzl/_data
[[email protected] _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf  zzl.py