在 Docker 中想最大限度地操作宿主机,一般需要使用 ssh 的方式,以下就介绍下如何实现 Docker 操作宿主机。
- 在宿主机上生成 ssh key
ssh-keygen -t rsa -b 4096
- 把 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
- 进入容器
docker exec -it alpine sh
- 安装 ssh
apk add openssh
- 操作宿主机
# 模板如下,根据实际情况替换{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"