让Docker使用更方便的Exec

简介:

我们在应用容器的过程中,无论是在通过Dockerfile在调试构建镜像的过程,还是容器运行一段时间想查看内部结构,我们还是希望能像操作本地机器一样,实时的查看容器内部文件,代码或者日志。或是修改文件,拷贝文件目录等等。

- 访问容器内部,目前有两种方法

1. Docker自带的exec命令

2. Nsenter工具

- 来说说Docker exec 命令方式访问

让docker使用更方便的Exec

- 如图所示,简单的ls命令。Linux系统自带的命令都可以通过这种方式运行。文件放错位置了,mv一下,查看log,就cat log.log一下,等等。

Exec加点料

- 简单的操作不能满足我们对他的好奇...

- 我们运行一下 docker exec -ti 61f ps -ef

让docker使用更方便的Exec

- 发现只有3个进程,进程1是CMD命令启动的脚本;进程2是脚本启动的程序;进程3是我们运行ps -ef的进程。

- 出于好奇,我又docker exec 9fe0 kill 15

- 容器从此就停止了...

- 原因是杀掉进程后,Dockerfile指定的CMD["/run.sh"]脚本运行结束,CMD入口已经退出,导致容器退出。

问题还没结束

- Kubernetes是一个基于docker的容器集群管理系统,它的一大特点是拥有Replication Controllers,他的作用主要是保持所起动的Pod数量不变(pod里面装的是container)。我猜想如果类似的kill掉容器内部的进程,那么kubernetes应该会让这个container重新启动。于是就来动手试试。

- 时速云他们应用了kubernetes,并且提供了客户端tce可以使用exec功能。运行 tce exec bbb-145fv-zkdqz ps -ef

让docker使用更方便的Exec

- tce exec bbb-145fv-zkdqz kill 15

让docker使用更方便的Exec

没有重启??

- 再次运行 tce exec bbb-145fv-zkdqz ps -ef

让docker使用更方便的Exec

- 又出现了。

- 由此可见Kubernentes的Replication Controllers还是很强大的。保证了集群中有指定数量的pod副本在运行。


本文作者:佚名

来源:51CTO

相关文章
|
Linux Docker 容器
19-Docker-常用命令详解-docker exec
19-Docker-常用命令详解-docker exec
|
Unix Shell Linux
5-15|Docker报错OCI runtime exec failed: exec failed: unable to start container process: exec: “/bin/ba
5-15|Docker报错OCI runtime exec failed: exec failed: unable to start container process: exec: “/bin/ba
|
Unix Docker 容器
使用docker 启动naocs 报错出现:standard_init_linux.go:241: exec user process caused "exec format error"
```markdown Error in Docker container startup: "standard_init_linux.go:241: exec user process caused \"exec format error\"". Occurred at 2024-06-29 09:26:19.910, followed by a failed hook with a syslog delivery error at 09:27:20.193. Seeking solutions from experts. ```
|
Ubuntu Linux 应用服务中间件
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ip": executable file not found in $PATH: unknown (Docker容器没有ip addr命令:exec ip addr 报错)
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ip": executable file not found in $PATH: unknown (Docker容器没有ip addr命令:exec ip addr 报错)
4374 0
|
Shell 应用服务中间件 Docker
Docker(17)- docker exec 命令详解
Docker(17)- docker exec 命令详解
455 0
Docker(17)- docker exec 命令详解
|
Shell C++ Docker
“docker run”VS“docker exec”,这两个命令有区别吗?
“docker run”和“docker exec”都是 Docker 容器中用于执行的命令。然而,在不同的情况下,它们的使用有着本质上的区别。
7513 0
|
Shell Docker 容器
alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案
alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案 docker exec -it 029e6df30836 /bin/bash exec: "/bin/bash": stat /bin/bash: no such file or directory 我们一般可能会在容器启动后进入容器,常用的是docker attach 镜像id,但是启动镜像的时候如果没有带 参数 -it的话,attach进去后可能是日志界面,并不能执行命令。
5174 0

热门文章

最新文章