发布信息

exec docker 和 docker attach的区别 (execdoc)

     2024-10-22 13:44:32     268

本文目录导航:

docker exec 和 docker attach的区别

Docker exec与Docker attach不论是开发者是运维人员,都经常有须要进入容器的诉求。

目前看,关键的方法不外乎以下几种: 1. 经常使用ssh登陆进容器 2. 经常使用nsenter、nsinit等第三方工具 3. 经常使用docker自身提供的工具方法1须要在容器中启动sshd,存在开支和攻打面增大的疑问。

同时也违犯了Docker所提倡 的一个容器一个进程的准则。

方法2须要额外学习经常使用第三方工具。

所以大少数状况最好还是经常使用Docker原生方法,Docker目前关键提供了Docker exec和 Docker attach两个命令。

以下在fedora21,docker1.7上验证。

Docker attachDocker attach可以attach到一个曾经运转的容器的stdin,而后启动命令执行的举措。

然而须要留意的是,假设从这个stdin中exit,会造成容器的中止。

[root@localhost temp]# docker psConTAINER IDIMAGE COMMAND CREATEDSTATUSPORTS NAMES2327e7eab0edbusybox:buildroot-2014.02 /bin/sh about a minute ago Up about a minute bb2[root@localhost temp]# docker attach bb2/ # lsbindevetchome liblib64linuxrcmediamntoptproc root runsbin systmpusrvar/ # pwd// #Docker exec对于-i、-t参数可以看出只用-i时,由于没有调配伪终端,看起来像pipe执行一样。

然而执行结果、命令 前往值都可以正确失掉。

[root@localhost temp]# docker exec -i bb2 /bin/shdateTue Jul 14 04:01:11 UTC 2015echo $?0dir/bin/sh: dir: not foundecho $?127经常使用-it时,则和咱们平时操作console界面相似。

而且也不会像attach形式由于分开,造成 整个容器分开。

这种形式可以代替ssh或许nsenter、nsinit形式,在容器内启动操作。

[root@localhost temp]# docker exec -it bb2 /bin/sh/ # pwd// # echo $?0/ # dir/bin/sh: dir: not found/ # echo $?127假设只经常使用-t参数,则可以看到一个console窗口,然而执行命令会发现由于没有取得stdin 的输入,不可看到命令执行状况。

[root@localhost temp]# docker exec -t bb2 /bin/sh/ # pwdhanging....[root@localhost temp]# docker exec -t bb2 pwd/[root@localhost temp]# echo $?0[root@localhost temp]# docker exec -t bb2 dir2015/07/14 04:03:57 docker-exec: failed to exec: exec: dir: executable file not found in $PATH[root@localhost temp]# echo $?0docker exec执行后,会命令执行前往值。

(备注Docker1.3仿佛有Bug,不能正确前往命令执行结果)[root@localhost temp]# docker exec -it bb cat / running 10[root@localhost temp]# docker exec -t bb / [root@localhost temp]# echo $?10[root@localhost temp]# docker exec -it bb / [root@localhost temp]# echo $?10[root@localhost temp]# docker exec -i bb / [root@localhost temp]# echo $?10对于-d参数在后盾执行一个进程。

可以看出,假设一个命令须要长期间进程,经常使用-d参数会很快前往。

程序在后盾运转。

[root@localhost temp]# docker exec -d bb2 /[root@localhost temp]# echo $?0假设不经常使用-d参数,由于命令须要长期间执行,docker exec会卡住,不时等命令执行成功 才前往。

[root@localhost temp]# docker execbb2 /^C[root@localhost temp]#[root@localhost temp]#[root@localhost temp]# docker exec -itbb2 /^C[root@localhost temp]#[root@localhost temp]# docker exec -ibb2 /^C[root@localhost temp]# docker exec -tbb2 /^C[root@localhost temp]#

docker进入容器命令

该操作需经常使用Docker的exec命令。该命令的语法为“dockerexec-it ”其中container_id是容器的ID,可以从“dockerps”命令的输入中失掉。例如,要进入正在运转的名为“my-container”的容器中并且执行bash命令,可以经常使用命令“dockerexec-itmy-containerbash”,该命令将会在my-container容器中启动bashshell并间接在容器中执行命令。

Docker从入门到知晓:Docker exec 命令学习

深化了解Docker:探求docker exec命令的全方位运行

在曾经把握了基础的Docker容器治理和docker run命令后,咱们将深化钻研一个关键的工具——docker exec。

它准许咱们间接在运转中的Docker容器外部操作,极大地裁减了容器的治理才干。

本文将具体引见docker exec命令的用法,包含基本语法、选项以及实战示例,让你更好地把握这一适用工具。

docker exec命令的外围作用是在容器运转时执行命令,无论是交互式shell,还是后盾义务,都可经过它成功。

但需留意,容器必定处于运转形态,非运转形态的容器不可执行docker exec。

命令的基本语法是:docker exec [选项] ConTAINER COMMAND [ARG...],比如,-it选项用于启动交互式bash shell,-d则用于以后台形式运本义务。

例如,经过`docker exec -it my_container /bin/bash`,咱们可以实时检查容器外部的文件,执行脚本。

权限治理上,docker exec自动经常使用容器内root权限,但可经过--user选项指定其余用户权限。

总结来说,docker exec是Docker工具箱中的关键一员,经过灵敏运用,咱们可以高效地与运转中的容器交互,执行各种义务。

把握这一命令,将有助于优化你的Docker经常使用水平。

赶快入手通常,解锁更多或许吧!

若想了解更多软件测试技术资料和面试阅历,这里有一系列资源供你参考:

经过继续学习和通常,你的职业开展将愈加宽广。如今就执行起来,探求人工智能与测试开发的融合新畛域!

相关内容 查看全部