我创建了一个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
答案 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