docker容器使用ip、ping命令报错bash: xx: command not found
概要
docker容器使用的时候经常会遇到bash: xx: command not found,这是因为docker镜像默认只包含核心组件,很多工具都需要我们自己手动安装。当我们运行容器后通常需要查看容器的ip和检查网络,今天就遇到相关问题了,发现“ip addr”、“ifconfig”、“ping”都无法使用
解决方法
博主这里docker pull下来的镜像都是debian的,这里可以使用apt-get update更新本地软件包索引,这里遇到了解析失败的问题,博主是因为没有开启内核流量转发导致的,开启内核流量转发是 Docker 网络功能正常工作的基础
一、开启内核流量转发
1、可以编辑创建以下文件
sodu vim /etc/sysctl.d/docker.conf
#添加以下参数
net.ipv4.ip_forward = 1 # 启用IPv4转发
net.ipv6.conf.all.forwarding=1 # 启用IPv6转发(可选)
2、保存后使用sudo sysctl -p 加载配置文件
sudo sysctl -p
3、重启docker服务使配置生效
sudo systemctl restart docker
二、现在可以重新进到docker里使用apt-get update更新本地软件包索引了
更新后安装下iproute2、net-tools和iputils-ping这三个软件包
apt install -y iproute2
apt install -y net-tools
apt install -y iputils-ping
安装完成后测试三个命令都可以正常使用了