bash - 如何从 bash 脚本启动 docker 容器?
问题描述
我一直无法找到任何令人满意的答案。我有一个简单的脚本,我希望在守护进程模式下运行多个容器:
#!/usr/bin/env bash
docker run -d -it -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data -v /home/gsilver1/data/QuickUMLS/data/:/data/UMLS ahc-nlpie-docker.artifactory.umn.edu/qumls:1 /home/QuickUMLS/run.sh
docker run -d -it -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/b9:1 /usr/share/biomedicus/scripts/run_biomedicus.sh
docker run --env umlsUser='USER' --env umlsPass='PW' -d -it -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/clmp:4 /usr/share/clamp/scripts/run_clamp.sh
docker run -d -it -v /mnt/DataResearch/gsilver1/note_test/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/mm:4 /usr/share/public_mm/scripts/run_metamap.sh
docker run --env ctakes_umlsuser='USER' --env ctakes_umlspw='PW' -d -it -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/ctks:1 /usr/share/ctakes/scripts/run_ctakes.sh
从终端执行时,这些命令运行良好。但是,当从脚本运行时,出现以下错误:
(base) gsilver1@d0pconcourse002:~/development/scripts$ ./run_nlp.sh
./run_nlp.sh: line 3: docker run -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data -v /home/gsilver1/data/QuickUMLS/data/:/data/UMLS ahc-nlpie-docker.artifactory.umn.edu/qumls:1 /home/QuickUMLS/run.sh: No such file or directory
./run_nlp.sh: line 5: docker run -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/b9:1 /usr/share/biomedicus/scripts/run_biomedicus.sh: No such file or directory
./run_nlp.sh: line 7: docker run --env umlsUser='horcle' --env umlsPass='nEj123456' -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/clmp:4 /usr/share/clamp/scripts/run_clamp.sh: No such file or directory
./run_nlp.sh: line 9: docker run -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/mm:4 /usr/share/public_mm/scripts/run_metamap.sh: No such file or directory
./run_nlp.sh: line 11: docker run --env ctakes_umlsuser='horcle' --env ctakes_umlspw='nEj123456' -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data ahc-nlpie-docker.artifactory.umn.edu/ctks:1 /usr/share/ctakes/scripts/run_ctakes.sh: No such file or directory
(base) gsilver1@d0pconcourse002:~/development/scripts$
这似乎表明脚本没有解释 docker 命令末尾的命令以在 docker 容器的文件系统中运行,而不是从远程文件系统中运行。我尝试在 docker 命令周围加上引号,然后使用 -c 以特定用户身份运行,等等,但都无济于事。如何让命令在每个 docker 的容器中运行,而无需修改 docker 映像的入口点?
解决方案
尝试用引号括起您的路径,有时会导致意外行为。
推荐阅读
- python - 有没有办法使用 pandas 和 beautifulsoup 读取表格单元格中的链接以及值
- javascript - 使用 JavaScript 将数组转换为列表
- .net-core - 是否可以将防火墙例外添加到 .Net 核心应用程序?
- shader - 如何使用透明纹理和透明颜色的混合?
- android - 迁移 Android Studio 和 kotlin 插件后,Dagger 注入停止工作
- php - 我的正则表达式中的某些内容无法识别从没有扩展名的位置提供的图像作为有效网址
- java - Splunk 正则表达式换行符,将多个 ERROR [stderr] 行组合成一个事件
- python - nltk 的 RegexpParser 中的递归
- python - 如何同时熔化 2 根柱子?
- c# - How do I execute a Stored Procedure in C#?