在 Docker 容器中操作宿主机

789 阅读1分钟

在 Docker 中想最大限度地操作宿主机,一般需要使用 ssh 的方式,以下就介绍下如何实现 Docker 操作宿主机。

  • 在宿主机上生成 ssh key
ssh-keygen -t rsa -b 4096

image.png

  • 把 Public Key 加入到 authorized_keys
cat /root/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
  • 启动容器,并把 Private Key 挂载到容器中
docker run --name alpine -dit -v /root/.ssh/id_rsa:/root/.ssh/id_rsa alpine sh

image.png

  • 进入容器
docker exec -it alpine sh

image.png

  • 安装 ssh
apk add openssh

image.png

  • 操作宿主机
# 模板如下,根据实际情况替换{user}, {nodeIp} 和 {command}
# ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -i /root/.ssh/id_rsa {user}@{nodeIp} "{command}"

# 示例,获取宿主机 hostname
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -i /root/.ssh/id_rsa {user}@{nodeIp} "hostname"

# 示例,获取宿主机 IP
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -i /root/.ssh/id_rsa {user}@{nodeIp} "ip a"

image.png