bash - docker run 和 docker 内部的命令行为不同
问题描述
我有将数据库加载到 RAM 并将第一个数据的地址打印到文件(db_REGISTER
)中的脚本,我想在 docker 中运行它。这个脚本在启动 docker 后在 bash 中启动时运行良好-it
$ docker run -it --env-file $FILE -v $wkp:/app dev_machine
$$ /app/scripts/loadBase.sh
db_REGISTER
<some random number>
但是,当我直接使用 docker run 启动相同的脚本时,脚本可以工作,但打印的地址始终为 0,之后我无法使用数据库。
$ docker run -it --env-file $FILE -v $wkp:/app dev_machine /app/scripts/loadBase.sh
db_REGISTER
0
这是否意味着第二个命令无法访问 RAM 中的持久地址?我应该怎么做才能纠正它?
编辑:经过一些建议,我尝试调整--ipc
设置。使用--ipc="host"
使它工作。我猜这是共享 RAM 的问题
解决方案
在执行命令之前,您可以尝试将文件挂载到 Docker 容器中:
docker run -it --env-file $FILE -v $PWD/scripts:/t -w /t dev_machine loadBase.sh
推荐阅读
- java - JavaFX、MouseEvent 问题
- rust - 具有正确函数签名的不兼容类型
- javascript - 两个 Google JS 客户端有什么区别:platform.js 与 api.js?
- python - 列表理解是合并这些 JSON 文件 Python 的正确方法吗?
- visual-studio-2017 - 无法通过附加到进程 VS Pro 2017 进行调试
- angular - 从 web.config 中的查询字符串中去除 URL
- javascript - withStyles 可以用于函数的结果吗?
- ios - 将数字字符串转换为不同的区域格式
- c# - 转换配置文件
- python - 检查熊猫中的多列条件