在docker容器中重新运行脚本

时间:2019-07-05 11:13:37

标签: docker

我创建了一个docker映像,其中包含一些python代码和可以执行它的shell脚本。它会处理来自主机系统的一堆图像。

此命令应创建一个新容器并运行它。

sudo docker run -v /host/folder:/container/folder opencv:latest bash /extract-embeddings.sh

最后,容器退出。如果我键入相同的命令,则会创建另一个容器并在完成时退出。但是如何正确使用容器?我应该使用重新启动,启动还是运行(然后在清理之后退出的容器)?每次创建一个新容器似乎都是不必要的。

我基本上只是想要一个泊坞窗映像,其中包含一些代码和可以在需要时执行的3-4个不同命令。

并且docker start命令似乎不接受“ bash /extract-embeddings.sh”作为参数,而是bash和extract-embeddings.sh是容器。所以也许我误解了容器的生命周期或用法。

编辑:

可以使用:

docker run -t -d --name opencv -v /host/folder:/container/folder
docker exec -it opencv bash /extract-embeddings.sh

2 个答案:

答案 0 :(得分:1)

构建以opencv:latest开头的自己的docker映像,并提供您运行的命令作为入口点。 Dockerfile可能像

FROM opencv:latest
CMD ["/bin/bash", "/extract-embeddings.sh"]

使用docker create创建一个命名容器。

sudo docker create --name=processmyimage -v /host/folder:/container/folder myopencv:latest

然后在每次要运行docker时使用docker start。

sudo docker start processmyimage

如果仅要运行一个命令,则此方法效果很好。如果有多个命令,我将采用一种方法来构建永远运行不相关命令的映像(例如tail -f

每个命令

答案 1 :(得分:1)

您可以编写Dockerfile来创建您的Docker映像并将脚本保留在其中-

Dockerfile:

FROM opencv:latest
COPY ./your-script /some_folder

创建图片:

docker build -t my_image .

运行容器:

docker run -d --name my_container

在容器内运行脚本:

docker exec -it <container_id_or_name> bash /some_folder/your-script
相关问题