docker容器内缺少命令的简单解决办法

有时候在docker容器里面不仅没有你期望的那些常用的命令,甚至没有yum命令让你去安装那些常用的命令,下面这篇文章主要给大家介绍了关于docker容器内缺少命令的简单解决办法,需要的朋友可以参考下

背景

而使用 docker exec 进入其中后,但该容器没有安装 sudo 或 netstat 或者 ping 等命令。

解决方案

在宿主机使用 nsenter 进入容器对应的命名空间下执行对应的命令即可

安装方式如下

系统命令
Ubuntu/Debian:apt-get install -y util-linux
Centos/Fedorayum install -y util-linux
Aplineapk add util-linux --no-cache

使用方式如下

nsenter 的 c 使用语法为,nsenter -t pid -n ,-t 接 进程 ID 号,-n 表示进入名称空间内, 为执行的命令。
举例:有一个容器的 PID 为 30749,进入该容器名称空间内执行 ifconfig ,如下列所示

nsenter -t 30749-n ifconfig 

容器的PID获取方式, 例如查找容器 paas-web

先获取容器的ID

[root@portal1 ~]# docker ps | grep paas-web d3c24a612b88        4e0043f40393                                           "/docker-entrypoint.…"   2 weeks ago         Up 2 weeks                                   k8s_paas-web_paas-web-c54d74d44-hr697_kube-system_74070b4e-3405-45aa-8bb1-469e37b6b313_0 097146cbeb00        ********:40443/kubernetes/pause-amd64:3.1    "/pause"                 2 weeks ago         Up 2 weeks                                   k8s_POD_paas-web-c54d74d44-hr697_kube-system_74070b4e-3405-45aa-8bb1-469e37b6b313_0 

d3c24a612b88 是我的目标容器,然后执行

[root@portal1 ~]# docker inspect --format "{{ .State.Pid }}"  d3c24a612b88 44463 [root@portal1 ~]# 

其中 44463 就是我要的容器PID

总结

到此这篇关于docker容器内缺少命令的简单解决办法的文章就介绍到这了,更多相关docker容器内缺少命令内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是docker容器内缺少命令的简单解决办法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 站长技巧