问题标签 [docker-exec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 如何对多个容器运行单个 docker exec 命令
我目前正在运行一个 mac mini 主机,可以随时运行 2 到 6 个由同一个代理构建的 docker 容器。容器充当构建代理,但时不时地构建失败并且无法正确清理。这会导致剩余的文件占用空间。
我想设置和 cron 作业,每晚运行,对每个容器执行 docker exec 命令并删除我的构建目录。
我试过简单的:
docker exec -it `docker ps -q` ls /root/build-dir
但这失败了:
OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"ee89958ce4bc\": executable file not found in $PATH": unknown
但是,这有效:
docker exec -it ee89958ce4bc ls /root/build-dir
有没有一种方法可以对多个容器使用 docker exec,而无需编写复杂的脚本来遍历来自 docker ps 的容器 ID?
注意:我不想更改 docker 容器并在那里添加 cron 作业。我希望它在主机上运行
docker - 如何使用导出命令通过 docker exec 设置环境变量?
我有一个使用祖先的正在运行的 docker 容器my_base_image
。现在当容器运行时,我可以使用 export 命令设置环境变量docker exec
吗?如果是,如何?
我尝试使用以下方法,但不起作用
基本上我想将 my_env_var=hey 设置为 docker 容器内的环境变量。我知道这可以通过在 Dockerfile 中使用.env_file
或env
键入 docker-compose &ENV
以多种方式完成。但我只想知道是否可以使用 docker exec 命令
docker - 在 docker exec 命令之间保存当前目录
我有一个命令列表,我需要一个一个地向正在运行的 docker 容器发出这些命令。但是,当我在容器中“cd”时,它没有按预期工作。例如:
将打印输出example
而不是file
. 我应该如何正确执行一系列语句,但在它们执行之间保留工作目录?最好,如果可以在不连接所有命令的情况下做到这一点?
docker - 如何在容器中执行动态代码?
我正在从事一个涉及基于浏览器的代码编辑器的个人项目(想想https://repl.it)。我的计划:
1) 不断地将正在写入的代码流式传输到 kubernetes 上的远程 docker 卷。
2)当用户按下“运行”时执行此代码。
我已经开始研究流媒体基础设施,并且很好地掌握了我想要如何做的事情。然而,关于代码执行,我需要一些指导。
想法 A:我在想我可以有两个 docker 容器,一个 Web 服务器和一个“环境”,位于同一个 VM 上。当请求进入网络服务器时,它将docker exec ...
在环境中运行。
想法 B:我使用kubectl
, 专门kubectl exec
用于在容器上执行代码。
有几点需要注意。我想让“环境”容器可互换,即我的应用程序应该能够支持python、js等。有什么想法吗?
docker - 启动时无法跳转到 nginx docker 容器
我可以使用以下命令启动并执行到 ubuntu docker 容器中:
但是,当我尝试对 nginx 服务器执行相同操作时,我得到一个空白控制台(尽管它确实在此处打印日志):
我可以通过在 nginx 服务器运行时运行附加命令来执行:
知道我做错了什么或者这是预期的行为吗?
docker - 写入正在运行的 docker 容器的标准输入
假设我将 docker 容器作为守护进程运行:
有没有办法写入该容器的标准输入?就像是:
上次我检查-i
和标志在与命令-d
一起使用时是互斥的。docker run
docker - docker exec 和 docker container exec 的区别
“docker exec”和“docker container exec”有什么区别?“docker commit”和“docker container commit”的区别是一样的吗?
我研究了很多,但找不到任何东西。感谢您的帮助。
docker - Passing a complex shell script via docker exec sh -c "..."
I have a script that works fine in sh
on a linux host as well as inside an alpine container. But when I try executing that using docker exec <containerID> sh -c "<script>"
it misbehaves. The script's function is to output stuff similar to ps.
EDIT: sh -c "<script>"
has the same behavior.
linux - 已关闭 - 无法在 Docker 官方文档的 Ubuntu 映像中重现 docker run--> docker exec
- 这将创建一个名为 ubuntu_bash 的容器并启动一个 Bash 会话:
docker run --name ubuntu_bash --rm -i -t ubuntu bash
- 这将在后台运行的容器 ubuntu_bash 中创建一个新文件 /tmp/execWorks:
docker exec -d ubuntu_bash touch /tmp/execWorks
- 这将在容器 ubuntu_bash 中创建一个新的 Bash 会话:
docker exec -it ubuntu_bash bash
- 这将在容器 ubuntu_bash 中创建一个新的 Bash 会话,并将环境变量 $VAR 设置为“1”。请注意,此环境变量仅在当前 Bash 会话中有效:
docker exec -it -e VAR=1 ubuntu_bash bash
我确实按照这个步骤 #1很好地创建了一个容器,将我放入交互式 Shell,但是当从该 Ubuntu 容器将步骤 #2发出到 shell 中/内部时,会收到下一个错误:
bash:码头工人:找不到命令
在我的理解中,这个错误是有道理的,因为在最近创建的容器内部不存在docker,所以它不会识别我在其中发出的任何docker-command。
正如他们在本教程中所述,在官方docker.com URL 下方,我有哪些选项可以实现这一点: https ://docs.docker.com/engine/reference/commandline/exec/
bash - 将一组命令直接放入`docker exec`
我有以下命令可以正常工作并foo
在返回之前打印:
我想用一个管道将多个命令定向到容器中,例如echo 'foo'
and ls /
。我尝试了以下方法:
- 这失败了,因为它在主机上运行命令并将输出通过管道传输到容器中: /li>
这失败了,因为它的语法不好。它也在主机上运行:
/li>这个失败了,但我不想使用字符串数组:
/li>
我还尝试了其他几种方法,例如将命令输入tee
orecho
但没有任何运气。如果你想知道我为什么要做这件看似荒谬的事情,那是因为:
- 这是一个简短的脚本,我想将所有内容放在一个地方
- 我想使用语法突出显示,所以我不想将它全部存储在字符串列表中
- 容器有脚本应该运行的程序,而主机没有
- 这是一个自动过程,我想在主机上使用 crontab 触发