首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在容器执行docker运行后启动时运行.sh脚本

在容器执行docker运行后启动时运行.sh脚本
EN

Stack Overflow用户
提问于 2021-04-22 23:55:45
回答 2查看 110关注 0票数 0

我知道这个问题已经有多个例子了,但我想得到一些建议,说明什么是解决这个问题的最佳方法。我的命令是:

代码语言:javascript
运行
复制
docker run --gpus all --rm --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -eMODEL_NAME=xxxx -ti -v/home/xxxx/xxxx:/xxxx nvcr.io/nvidia/tensorflow:20.03-tf1-py3

现在,一旦进入码头,我想运行以下命令

代码语言:javascript
运行
复制
cd /xxxx
apt-get update && apt-get install -y libcurl3 libcurl-openssl1.0-dev
export PYTHONPATH=`pwd`
touch /opt/tensorflow/horovod-source/.eggs/easy-install.pth
pip install tensorflow-probability==0.8
pip install xxxx
pip install opencv-python-headless
python ./xxxx/xxxx.py  --model_dir=xxx
exit

现在,我将如何将所有这些合并成一个脚本?我没有访问Dockerfile的权限,因为我使用的是nvcr.io/nvidia/tensorflow:20.03-tf1-py3。我最好的选择是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-23 04:35:00

您可以使用内容在commands.sh中创建一个名为/home/xxxx/xxxx的文件,然后在主机机器中运行以下命令:

代码语言:javascript
运行
复制
chmod +x /home/xxxx/xxxx/commands.sh

现在使用以下命令运行容器:

代码语言:javascript
运行
复制
docker run --gpus all --rm --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -eMODEL_NAME=xxxx -ti -v/home/xxxx/xxxx:/xxxx nvcr.io/nvidia/tensorflow:20.03-tf1-py3 sh /xxxx/commands.sh
票数 2
EN

Stack Overflow用户

发布于 2021-04-23 01:33:41

为了在docker中运行多个命令,使用带分号的/bin/bash -c;

代码语言:javascript
运行
复制
docker run image /bin/bash -c "cd /some/path; python a.py"

在这种情况下,只有当第一个命令(cd)没有返回错误或退出状态时,才会执行第二个命令(python)。以避免这种使用&&而不是;(分号)

代码语言:javascript
运行
复制
docker run image /bin/bash -c "cd /some/path && python a.py"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67222223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档