在脚本中运行Docker容器的命令

6
我需要在脚本中运行命令到docker容器中,我尝试使用以下命令:
docker run -it <container> /bin/bash -c "command"

我没有收到任何错误信息,但是命令没有执行。


1
你能具体一点吗?例如 docker run -it <container> /bin/bash -c "echo 'Hello'" 在我的情况下使用良好。这里的<container>是centos。 - lifus
我需要在nginx容器上清除缓存,我运行命令:docker run -it nginx /bin/bash -c "rm -f /tmp/cache///*"。如果我在容器内部运行此命令,则可以正常工作,以此方式清除缓存。 - hellb0y77
这是因为您应该提交更改 - lifus
不,docker commit nginx 成功了,但文件仍然存在。 - hellb0y77
我无法创建新的图像,我不能停止服务...我必须手动完成。 - hellb0y77
你尝试过运行 docker exec <container_id> rm -f /tmp/cache/*/*/* 吗? - lifus
1个回答

3

我不能创建新的镜像,也不能停止服务...我必须手动完成

可以在运行中的容器中调用命令

docker exec <container_id> rm -f /tmp/cache/*/*/*

我已经尝试过了,没有出现任何错误,但文件并没有被删除。 - hellb0y77
@user2385354 你确定 rm -f /tmp/cache/*/*/* 是你实际需要的吗?你要删除 /tmp/cache 及其所有子文件夹吗?如果是这样,那么 rm -rf /tmp/cache 才是你需要的。 - lifus
如果我启动 rm -rf 命令,它会删除所有文件夹并停止 Nginx 工作,我需要停止和重新启动容器,而 rm -f 命令只会删除所有文件夹及其子文件夹中的文件。 - hellb0y77
您可以按照以下方式删除所有文件find /tmp/cache/ -type f -delete。如果需要,您还可以添加-maxdepth <n> - lifus
1
实际上,https://dev59.com/xm025IYBdhLWcg3wEhjr#6896903 正是建议这样做的。请参见 http://nginx.2469901.n2.nabble.com/best-way-to-empty-nginx-cache-tp3017271p3017429.html。 - lifus
我怀疑为了让答案起作用,您需要执行以下操作:docker exec <container_id> rm -f "/tmp/cache/*/*/*" - Kevin Lyda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接