Docker 持久化

 Volume

 

- Data Volume:由Docker管理,持久化数据的最好方式

- Bind Mount 由用户指定存储的数据具体在系统什么位置

 

container内部是read-only image + read-write layer 

dockerfile里:Volume ["/app"]

# 将container里的/data目录下的存放到宿主机Mountpoint中

docker volume ls
docker volume inspect [ID]
# Mountpoint 存放着docker的存储数据
more [Mountpoint_location]

docker rm -f [containerID]
docker volume prune
# remove all local volumes not used by at least one container

docker run -d -v volume_data_name:/app my_container
# -v: 指定name:/container内部location
docker volume inspect volume_data_name

e.g.  MYSQL多个container公用一个存储空间

docker pull mysql:5.7

docker run --name mysqlcontainer -e MYSQL_ROOT_PASSWORD=my-secret-pwd -d -v mysql-data:/var/lib/mysql mysql:5.7

docker volume ls 

docker volume inspect mysql-data

docker exec -it mysqlcontainer sh

mysql -u root -p 
my-secret-pwd

create databse demo
exit 

exit 
docker rm -f mysqlcontainer
docker run --name mysqlcontainer -e MYSQL_ROOT_PASSWORD=my-secret-pwd -d -v mysql-data:/var/lib/mysql mysql:5.7
新建立的container会看到和已删除的container一样的数据库,因为volume路径一样

docker system prune -f

# -f : force

  • 停止的容器:删除所有已经停止的容器。
  • 未使用的镜像:删除所有未被任何容器使用的镜像。
  • 未使用的网络:删除所有未被任何容器使用的网络。
  • 未使用的挂载卷:删除所有没有被挂载的卷。

Bind Mount 挂载

 docker run -d -v $(pwd):/app my-cron 

# 使用-v 直接把本地目录bind存储空间

 docker run -d -v /home/user/myapp:/app -v /home/user/config:/config my-cron 

# bind多个目录

如果是用-v,可以不用在dockerfile里写Volume,那是不使用-v的时候的默认存储地方

多个机器之间容器共享数据 sshfs

112机器和108机器之间共享数据e.g.

both:  docker plugin install --grant-all-permissions vieux/sshfs 

 

on 112: 【只能使用password,是sshfs的bug】

docker volume create --driver vieux/sshfs \
-o sshcmd=root@192.168.2.108:/home/v \
-o password=123456 \
sshvolume

创建容器挂载volume:

docker run -it -v sshvolume:/app busybox sh
cd /app
echo "this is me " > test.txt

这样,实现112上的docker container写入108的目录

是否能用sshs实现多台数据互通?

要使用 vieux/sshfs Docker 插件实现三台机器之间共享目录,直接使用该插件是不太合适的,因为 vieux/sshfs 主要是用于将远程文件系统挂载到单个 Docker 容器上,而不是用于在多个机器之间共享目录。

更适合的解决方案

NFS分布式文件系统(如 GlusterFS 或 Ceph)更适合用于多台机器之间的共享目录。这些系统可以为多个客户端提供一致的文件系统视图,并支持并发访问。

 

posted @ 2024-06-26 09:11  PEAR2020  阅读(1)  评论(0编辑  收藏  举报