两者都能够在容器中执行命令.两者都可以分离容器.
那么docker exec和docker attach之间的真正区别是什么?
是root默认的用户打电话时docker exec(没有--user)?
做了USER在Dockerfile线影响默认用户docker exec?
假设我将 docker 容器作为守护进程运行:
docker run -d foo
有没有办法写入该容器的标准输入?就像是:
docker exec -i foo echo 'hi'
上次我检查-i和-d标志与docker run命令一起使用时是互斥的。
除了使用shelljs(类似包)执行这些命令之外,还有没有更好的方法可以从节点js执行docker命令?
我看过dockerode这个包。虽然它对某些命令很有用,但它并没有对“docker exec”命令给出太多的看法。
我只需要在从 shelljs 无法提供的 nodejs 执行 docker exec 时进行更多控制。我想知道一旦 docker exec 命令被执行,它是否被成功执行。
我使用 Docker 创建了一个新的 Digital Ocean 服务器(使用Laradock),并使我的 Laravel 网站运行良好。
\n\n现在我想使用Deployer自动化部署。
\n\n我认为我唯一的问题是我无法让 Deployer 运行docker exec -it $(docker-compose ps -q php-fpm) bash;,这是我成功手动使用进入适当 Docker 容器的命令(在使用 SSH 从我的本地计算机连接到 Digital Ocean 服务器之后)。
当 Deployer 尝试运行它时,我收到以下错误消息:
\n\n\xe2\x9e\xa4 Executing task execphpfpm\n[1.5.6.6] > cd /root/laradock && (pwd;)\n[1.5.6.6] < /root/laradock\n[1.5.6.6] > cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)\n[1.5.6.6] < the input device is not a TTY\n\xe2\x9e\xa4 Executing task deploy:failed\n\xe2\x80\xa2 done on [1.5.6.6]\n\xe2\x9c\x94 Ok [3ms]\n\xe2\x9e\xa4 Executing task …我在 Linux 上使用 shell 脚本来执行一些 Docker 命令:
docker exec -t -i test1 passwd
...
docker exec -t -i test2 passwd
在第二个 exec 命令中,我收到以下错误:
docker: "exec" requires a minimum of 2 arguments.
我做错了什么,或者我错过了什么?
先感谢您。
上下文:我正在尝试为日常使用该docker exec命令编写一个快捷方式。由于某些原因,我正在尝试一个问题,当我在容器内使用bash控制台时,有时输出会中断(历史被弄乱了,在我写的时候,行彼此覆盖,...)
我在这里读到,您可以通过在启动bash控制台之前添加一些命令来克服此问题。
这是我的脚本的相关摘录
#!/bin/bash
containerHash=$1
commandToRun='bash -c "stty cols $COLUMNS rows $LINES && bash -l"'
finalCommand="winpty docker exec -it $containerHash $commandToRun"
echo $finalCommand
$finalCommand
这是我得到的输出:
winpty docker exec -it 0b63a bash -c "stty cols $COLUMNS rows $LINES && bash -l"
cols: -c: line 0: unexpected EOF while looking for matching `"'
cols: -c: line 1: syntax error: unexpected end of file
我在这里读到,这与解析和扩展有关。但是,我不能使用函数或eval命令(或者至少我没有成功使它起作用)。
如果我直接在终端中执行第一条输出线,那么它将正常工作。
我该如何克服这个问题?
我想检查我的 docker 容器的内容。我想在容器内运行powershell或命令提示符,以便可以列出目录。
此容器映像使用 ASP.net 4.6.1框架托管ASP.NET Web API应用程序。
我运行了以下命令:
docker container ls - to list conatinersdocker exec -i -t a1da40af6b3c powershell 但什么也没发生(如图所示)。我错过了什么吗?
asp.net-web-api docker docker-for-windows docker-exec docker-desktop
是否可以输入由Google Cloud Run驱动的容器?以某种方式docker exec -it CONTAINER /bin/bash?  
我遇到一个错误,我无法在本地或基于Google Cloud Shell的容器上基于相同的映像来复制运行容器。
对于使用Cloud Shell连接到Cloud Run还是从本地环境进行连接,我并不挑剔。
我已经构建了 docker 容器系统,其中容器包含命令行应用程序。我传递参数并使用来自另一个应用程序的 docker exec 命令运行应用程序。
当我从 docker 内部运行命令行应用程序时,需要 0.003 秒才能运行。
$ time comlineapp "hello"
但是当我使用 docker exec 从外部 docker 运行它时,需要 0.500 秒
$ time docker exec comline app "hello"
显然 docker exec 需要很多时间。我们需要任何帮助来尽可能减少 docker exec 命令的时间。
这是泊坞窗文件
FROM ubuntu:18.04
RUN adduser --disabled-password --gecos "" newuser
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y install time && \
    apt-get -y install gcc mono-mcs && \
    apt-get install pmccabe && \
    rm -rf /var/lib/apt/lists/*
所有必需的软件都已安装。
我正在尝试访问已经运行的特权 Docker 容器中的串行端口(作为用户),但我收到“权限被拒绝”错误,而权限应该正确设置。作为一个最小的可重现示例(假设串行设备连接到 /dev/ttyUSB0):
# start docker container with your user id, give it privileged access and mount /dev
docker run -itd --user $(id -u) --name test --privileged -v /dev:/dev ubuntu
# add user and add it to dialout (not sure if this is necessary as we have privileged access)
docker exec -it --user 0 test sh -c "groupadd -g $(id -g) user && useradd -m -u $(id -u) -g $(id -g) -G dialout user"
# install picocom to test …我有ubuntu 14.04,它缺少docker exec
sudo docker exec -it ubuntu_bash bash
我希望在现有的运行docker容器中运行交互式bash shell.
sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a
docker ×12
docker-exec ×12
exec ×2
bash ×1
docker-run ×1
laradock ×1
node.js ×1
permissions ×1
php-deployer ×1
serial-port ×1
shell ×1