第三节 容器数据卷
程序员文章站
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