测试用,在 docker 里装了 sqlserver 使用的是 docker-commose 启动 配置里挂载映射到了外部磁盘。 volumes: - /mnt/myroot/dbdata/sqlserver_data:/var/opt/mssql/data 今天因故重装了系统。外部磁盘没变。 装好系统和 docker 后, 设置好映射路径, 但是没资料 是哪里姿势不对? 权限什么的也设置对了 我的理解是,文件夹映射后 数据是存在磁盘里。 重装系统后只需要映射就好。 不知道是我理解有误 还是我操作有误。
1
KB12312 258 天前
之前遇到过一次,Mongo 换了容器之后一直挂载不上,进容器创建文件,外面能看见,但是外面目录下的文件容器里又看不见。确实很奇怪,不知道有没有大神知道原因的。
|
2
oneisall8955 258 天前 via Android
检查下/mnt/myroot/dbdata/sqlserver_data 有文件吗
|
3
huangsijun17 258 天前
再 exec 到容器里,看一下/var/opt/mssql/data 的情况如何?
|
4
helee9199 OP @oneisall8955 文件肯定是有的,这次唯一的区别是 原本 dbdata 是放在系统盘的,因为重装系统要格式化盘所以我吧整个 dbdata 挪到了 B 盘 ,就是为了方便重装系统的时候资料不丢 设置好了挂载和权限.我现在在想, 我先是未挂载启动,然后停止容器,然后再挂载启动的,因为还有安装 oracle 好像得跑一次产生原本的资料后再挂载的.
@huangsijun17 容器里的应该就是原始数据吧? 所以挂载应该是相当于把资料存到我挂载的路径吧?这个要如何理解? |
5
oneisall8955 258 天前 via Android
如果你怕挂载与容器启动顺序问题,可以
docker-compose down 再 docker-compose up -d down 会先删除容器,up 会是个新的容器 |
6
guanzhangzhang 258 天前
1. 看看镜像的 DOckerfile 的 volume 未知是否变了
2. 还有启动脚本看看,是不是 env 或者配置文件改变了 data 目录 3. 是不是之前你就挂载错了数据目录,例如容器内是/var/lib/mssql/data |
7
Belmode 258 天前
是用了 wsl 吗?
|
8
helee9199 OP @guanzhangzhang 折腾了半天 反复试验终于破案了.感觉和挂载盘有关, 挂在外置盘不行,复制到系统盘路径里设置好权限以后 SQLSERVER 就好了
|