docker执行官。 如果没有shell进程呢?
docker exec <container> <command>
。 在文档中写道:
在正在运行的容器中运行命令
但究竟是什么意思? 在容器中执行一个命令是什么意思? 我无法想象一个情况, exec
命令是由在容器中运行的shell执行的。 但是我们不能假定每个容器都有整个运行的shell或shell。
docker exec <container> <command>
将在指定容器的命名空间中运行给定的命令。 docker exec创build新的进程并将其名称空间设置为容器的名称空间,然后执行命令。
有关Linux命名空间的更多信息,请访问: 命名空间
进程的命名空间可以使用以下命令find:
sudo ls -l /proc/<PID>/ns
当我想进入容器并查看里面发生了什么时, docker exec <container> command
对我很有用。
docker exec -it <container> sh
或者在某些情况下,我需要移动或查看我正在运行的应用程序中的configuration文件
docker exec <container> ls /root/config_files/
即使在像alpine:latest
这样的微型容器中alpine:latest
你已经在里面了,它是默认的入口点/bin/sh -c
。
docker run alpine echo "hola mundo"
容器是一个独立的进程环境,具有自己的networking环境,挂载的文件系统,命名空间的进程列表等等。当你执行docker run
,通过运行命令pid 1来创build这个命名空间。当你执行一个docker exec
可以在这个相同的命名空间内运行任何命令。 例如:
$ docker run --name test-exec -d busybox tail -f /dev/null 5e77cec13293e7146dac6858ed11be1e6a706ba973c419435303f4ec8c346e2d $ docker exec test-exec ps -ef PID USER TIME COMMAND 1 root 0:00 tail -f /dev/null 6 root 0:00 ps -ef
请注意,在上述命令中,我甚至没有运行过shell。
- Docker撰写与一个终止容器
- 为什么用“docker运行 – 高山睡眠无限”创build的容器进入退出/停止状态?
- 为什么在主机上使用数据专用容器?
- 在“docker run”命令中,“sandbox”是什么意思?
- 使用Dockerfile创buildOpenShift应用程序的问题(使用oc new-app)
- 泊坞窗jenkins和声纳设置
- Rails ckeditor只在本地上传图片,而不是在docker上
- 安装mongodb pecl软件包的问题:/ tmp / pear / temp / mongodb / configure:./configure.lineno:line 1:syntax error:unterminated quoted string
- 如何在docker build期间添加elasticsearch索引