在docker早期,许多用户添加SSH server到它们的镜像里,以便他们能通过外部的shell来访问容器。这样做的话相当于把容器当作虚拟机用了,添加了一个进程无疑增加了系统的开销。于是Docker引入了exec命令,提供了不需要安装ssh server直接在容器内执行命令的方法。下面我们介绍这个命令。
你想在一个运行的容器内执行命令。
使用docker exec命令。
为了演示exec命令,我们先在后台启动一个容器,名称为sleeper,仅执行一个sleep命令。
现在我们启动了一个容器,你可以在上面使用docker exec命令完成各种试验。exec命令有三种模式,如下:
首先我们学习基本模式。下面的命令在容器sleeper内执行一个echo命令:
有没有注意到这个命令的结构与docker run命令类似,只是我们给的ID是正式运行容器的ID而不是镜像ID。运行的echo命令是容器内的命令,不是主机上的。
后台模式是在后台运行命令,在你的终端不会看到输出。这个模式通常用于执行花费比较长的任务,并且不关心它的输出,如清除日志文件:
最后是交互模式。通常用来执行一个shell,然后与之交互: