首页 > 解决方案 > 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 的问题

标签: bashdocker

解决方案


在执行命令之前,您可以尝试将文件挂载到 Docker 容器中:

docker run -it --env-file $FILE -v $PWD/scripts:/t -w /t dev_machine loadBase.sh


推荐阅读