将docker迁移到本机其他磁盘
背景:
华为云上用docker部署了oracle,某天oracle突然无法访问了,发现是磁盘满了,导致oracle无法启动。
磁盘情况:vda系统盘40G,vdb数据盘100G。开始安装时使用了默认参数安装在了系统盘,目前是40G的系统盘满了。
方案1:扩充系统盘。
增加了20G,也扩展到了60G,但是系统仍显示vda占用100%。仍然无法启动。所以尝试使用方案2.
方案2:将docker迁移到100G的数据盘上
1.停止所有正在运行的Docker容器
2.停止Docker服务
3.复制Docker目录到新的位置
使用cp或rsync等工具将Docker目录复制到新的位置。我的目标路径是数据盘 /mydata
4.更新Docker配置文件/etc/docker/daemon.json
如果文件不存在,需要创建(touch /etc/docker/daemon.json)。
示例配置文件如下所示:(registry-mirrors、dns两个值填你自己的镜像仓库和DNS服务器地址)
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"],
"dns": ["IP1", "IP2"],
"data-root": "/mydata/docker"
}
如果不知道前面的怎么填,一般直接最简单的即可
"data-root": "/mydata/docker"
}
5.重新装载daemon配置
6.启动Docker服务
7.查看image
8.启动容器:运行docker start
9.进入容器进行测试
docker exec -it oracle11g /bin/bash
/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_HOME="/home/oracle/app/oracle/product/11.2.0/dbhome_1";
export PATH=$ORACLE_HOME/bin:$PATH;
export ORACLE_SID=orcle;
sqlplus /nolog
conn /as sysdba
补充一个操作上的问题:
在操作玩第6步查看image的时候,发现列表是空的。
用docker info 看了各项参数信息,发现data root仍是之前的。
那就是daemon.json没有生效。原因是我在操作的时候,没有理解这个位置是固定的/etc/docker/daemon.json,而是建在了迁移后的路径里 /mydata/docker/daemon.json
所以没有生效。
新建了/etc/docker/daemon.json后,
后续操作正常。