我知道这个问题已经有多个例子了,但我想得到一些建议,说明什么是解决这个问题的最佳方法。我的命令是:
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现在,一旦进入码头,我想运行以下命令
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。我最好的选择是什么?
发布于 2021-04-23 04:35:00
您可以使用内容在commands.sh中创建一个名为/home/xxxx/xxxx的文件,然后在主机机器中运行以下命令:
chmod +x /home/xxxx/xxxx/commands.sh现在使用以下命令运行容器:
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发布于 2021-04-23 01:33:41
为了在docker中运行多个命令,使用带分号的/bin/bash -c;
docker run image /bin/bash -c "cd /some/path; python a.py"在这种情况下,只有当第一个命令(cd)没有返回错误或退出状态时,才会执行第二个命令(python)。以避免这种使用&&而不是;(分号)
docker run image /bin/bash -c "cd /some/path && python a.py"https://stackoverflow.com/questions/67222223
复制相似问题