使用racadm执行sslkeyupload时提示文件不存在的问题求助
问题分析与解决方案
问题描述
我分别在Windows Powershell中使用官方工具、Mac中通过Docker容器运行racadm,均能正常拉取RAC信息,说明登录凭证有效,但执行sslkeyupload操作时出现错误:
ERROR: Specified file file.pem does not exist.
在Mac上已将文件权限设为chmod 777,且文件与执行脚本的目录在同一位置,执行命令为:
docker run stackbot/racadm -r 10.10.1.4 -u root -p calvin sslkeyupload -t 1 -f ./file.pem
请问我哪里操作有误?
核心原因
Docker容器拥有独立的文件系统,默认情况下无法访问宿主机的本地文件。你指定的./file.pem是相对于容器内部的路径,而非宿主机的当前目录,所以容器内找不到这个文件——哪怕宿主机上权限设置正确也没用。
解决办法
执行docker run时必须通过-v参数将宿主机当前目录挂载到容器内部的某个路径,让容器能访问到目标文件:
docker run -v $(pwd):/tmp stackbot/racadm -r 10.10.1.4 -u root -p calvin sslkeyupload -t 1 -f /tmp/file.pem
$(pwd)会自动替换为你当前执行命令的宿主机目录路径-v $(pwd):/tmp表示将宿主机当前目录映射到容器内的/tmp目录- 此时容器内的
/tmp/file.pem完全对应宿主机上的./file.pem,racadm就能正常读取文件了
验证步骤(可选)
如果不确定挂载是否成功,可以先执行以下命令验证容器内是否能看到文件:
docker run -v $(pwd):/tmp stackbot/racadm ls -l /tmp/file.pem
若输出文件的权限、大小等信息,说明挂载成功,再执行sslkeyupload命令即可。
内容的提问来源于stack exchange,提问作者CDub
相关产品推荐
相关产品推荐

