Docker 容器内操作宿主机

家电维修 2023-07-16 19:17www.caominkang.com家电维修技术

目录
    • 容器内部运行宿主机的docker命令
    • 容器内部中操作宿主机上的网络
    • 容器内部执行宿主机的shell命令
    • 容器内存不足借用宿主机的内存
容器内部运行宿主机的docker命令

实现这种需求,其实非常简单,你只需要将docker宿主机的docker文件和docker.sock文件挂载到容器中即可,具体为

-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker

你要先找到你宿主机的docker和docker.sock位置,别挂载错了,标准的Linux正常来说就是上面的位置。

你在启动docker容器的时候,将上述两个文件正常挂载后,就可以在docker中执行诸如 docker images 等等这样的命令了。

如果出现问题 permission denied

Got permission denied hile trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

…………………………………………………………

dial unix /var/run/docker.sock: connect: permission denied

解决方法

在容器所在的宿主机上直接给 docker.sock 777权限,命令 chmod 777 docker.sock

容器内部中操作宿主机上的网络
-v /proc:/hostip/:ro

在docker run 的时候添加以上挂载 容器启动后

nsenter --mount=/hostip/1/ns/mnt --=/hostip/1/ns/ ip a

就可以看到宿主机的IP信息了其它网络信息也可以!

容器内部执行宿主机的shell命令
-v /proc:/host/proc

docker里面执行nsenter --mount=/host/proc/1/ns/mnt sh -c “ls /root”
就可以看到宿主机的信息了,愉快的开始shell命令,除了有点不太方便

容器内存不足借用宿主机的内存

创建的Docker容器磁盘空间不够怎么办?挂载宿主机的目录到容器就可轻松解决!

-v /data1/test/:/data/

Copyright © 2016-2025 www.jianfeikang.com 建飞家电维修 版权所有 Power by