卷——介绍
今天你卷了吗?
内卷是近几年来中文网络上特别流行一个词,一般用于形容某个领域中发生了过度的,导致人们进入了互相倾轧、内耗的状态。
今天要学习的是docker中的卷,用来存储容器数据。与在容器的可写层中持久化数据相比,卷通常是更好的选择,因为卷不会增加使用它的容器的大小,并且卷的内容存在于给定容器的生命周期之外。
卷——命令
-
查看卷
docker volume ls
-
创建卷
$ docker volume create volumeName
-
检查卷
$ docker volume inspect volumeName
-
删除卷
#会删除未被容器或者服务副本使用的全部卷。谨慎使用! docker volume prune #删除未被使用的指定卷。 docker volume rm
卷——位置
创建了卷之后,会在操作系统中创建出目录,不同的操作系统对应的目录不一样。
- Windows: \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
- Linux: /var/lib/docker/volumes
卷——使用
-
使用–mount启动容器
docker run -d --name devtest --mount source=myvol2,target=/app nginx:latest
-
使用-v启动容器
docker run -d --name devtest -v myvol2:/app nginx:latest
-
使用带有 docker-compose 的卷
version: "3.9" services: frontend: image: node:lts volumes: - myapp:/home/node/app volumes: myapp:
将在第一次调用docker-compose up卷时创建。
卷——修改
docker-compose 启动成功后,容器内卷路径修改:
- 修改config.v2.json文件,找到MountPoint,修改挂载目录
vim /var/lib/docker/containers/container-ID/config.v2.json
"MountPoints":{"/home":{"Source":"/path/to/your/host","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/path/to/your/host","Target":"/home"}}}
- 停止docker服务
systemctl stop docker.service
如果报错需要停止docker.socket
sudo systemctl stop docker.socket
- 启动docker服务,启动容器
systemctl start docker.service
参考链接:
https://docs.docker.com/storage/volumes/
https://stackoverflow.com/questions/47489631/warning-stopping-docker-service-but-it-can-still-be-activated-by-docker-socke
https://stackoverflow.com/questions/43181654/locating-data-volumes-in-docker-desktop-windows
https://segmentfault.com/a/1190000040899948