当前位置: 首页 > news >正文

在 WSL Ubuntu 上使用 Docker 搭建可被 Ansible 控制的受控节点环境

在学习 Ansible 自动化运维时,通常需要一台控制节点和一台或多台受控节点。为了快速搭建实验环境,可以在 Windows 10 上通过 WSL Ubuntu + Docker 来模拟受控节点。


一、安装 Docker

1️⃣ WSL 环境准备

  • 操作系统要求:Windows 10 64-bit: Pro, Enterprise, or Education

  • 前置条件

    • 启用 WSL2(已安装 Ubuntu 子系统)
    • BIOS 中启用虚拟化(VT-x / AMD-V)

2️⃣ 下载 Docker Desktop

  1. 打开官网:Docker Desktop
  2. 点击 Download for Windows (Windows 10/11)
  3. 保存安装包 Docker Desktop Installer.exe

3️⃣ 安装 Docker Desktop

  1. 双击安装包开始安装

  2. 勾选选项:

    • Use WSL 2 instead of Hyper-V(推荐)
    • Add shortcut to desktop 可选
  3. 点击 Install

  4. 安装完成后勾选 Start Docker Desktop when you log in

  5. 点击 Finish

如果安装过程中提示启用 WSL2 或虚拟机平台,Docker 安装程序会引导你启用。


4️⃣ 启动 Docker Desktop

  1. 在开始菜单启动 Docker Desktop
  2. 系统托盘显示 Docker 图标,等待初始化完成
  3. 进入 Settings → Resources → WSL Integration,确保勾选启用 Ubuntu 子系统

5️⃣ 验证 Docker 安装

Ubuntu WSL 中执行:

docker --version
docker run hello-world

如果看到 “Hello from Docker!” 信息,说明 Docker 安装成功,并且 WSL Ubuntu 已能使用 Docker。


二、在 Docker 容器中创建受控节点

为了模拟多台受控节点,可以在 Docker 容器里启动 Linux 系统并运行 SSH 服务。


1️⃣ 拉取 Linux 镜像

docker pull ubuntu:20.04
# 或者
docker pull centos:7

2️⃣ 启动容器并映射 SSH

docker run -d --name node1 --hostname node1 --privileged -p 2222:22 ubuntu:20.04 sleep infinity

参数说明:

  • -d → 后台运行
  • --name node1 → 容器名
  • --hostname node1 → 容器主机名
  • --privileged → 给容器额外权限,方便调试
  • -p 2222:22 → 将宿主机 2222 端口映射到容器 22 端口
  • sleep infinity → 容器持续运行,不会退出

3️⃣ 安装 SSH 和 Python

进入容器:

docker exec -it node1 bash

安装依赖:

apt update
apt install -y openssh-server python3 sudo
mkdir -p /var/run/sshd
service ssh start

Python 是 Ansible 模块执行依赖。


4️⃣ 设置 root 密码

passwd root
# 输入密码,例如 root123

检查 SSH 配置文件 /etc/ssh/sshd_config,确保:

PermitRootLogin yes
PasswordAuthentication yes

然后重启 SSH 服务:

service ssh restart

5️⃣ 配置 Ansible inventory

在控制节点项目目录下创建 inventory.ini

[mydocker]
node1 ansible_host=127.0.0.1 ansible_port=2222 ansible_user=root ansible_password=root123

6️⃣ 测试 Ansible 连接

ansible -i inventory.ini mydocker -m ping

成功输出示例:

node1 | SUCCESS => {"changed": false,"ping": "pong"
}

说明控制节点已经可以通过 SSH 管理 Docker 容器中的受控节点。


7️⃣ 退出 Docker 容器而不停止它

如果你通过 docker exec -it node1 bash 进入容器:

  • 快捷键退出Ctrl + P 然后 Ctrl + Q
  • 返回宿主机 shell,容器仍在后台运行

可以用以下命令查看容器状态:

docker ps

三、常见问题与解决方案

  1. 主机名无法解析
    容器名字不能直接用于宿主机 SSH,建议用 127.0.0.1 + 映射端口 登录。

  2. SSH 服务未安装/未运行
    Ubuntu 容器默认没有 SSH,需要手动安装并启动。

  3. 缺少命令工具
    ssnetstat 可能不存在,需要安装 iproute2 等工具来检查端口。

  4. 密码忘记或认证失败
    可以直接 docker exec 进入容器,重置 root 密码。

  5. SSH 配置注意事项
    必须允许 root 登录和密码认证,否则 Ansible 无法通过 SSH 登录。

  6. 端口映射
    容器端口 22 映射到宿主机端口(如 2222),Ansible inventory 里要正确配置 ansible_port


文章转载自:

http://DFPDLiuN.wzwyz.cn
http://MthwrUfG.wzwyz.cn
http://ukZt1stD.wzwyz.cn
http://2jTEvl1s.wzwyz.cn
http://vsn7usHd.wzwyz.cn
http://YnG9XzgJ.wzwyz.cn
http://yoCFB77J.wzwyz.cn
http://zRekppC6.wzwyz.cn
http://nBZlqNBa.wzwyz.cn
http://NS3GWPzJ.wzwyz.cn
http://u7nDN1Lm.wzwyz.cn
http://aJzQf9uY.wzwyz.cn
http://VcxwmA1W.wzwyz.cn
http://38GjDUju.wzwyz.cn
http://UHXprZTa.wzwyz.cn
http://P4qTXJtB.wzwyz.cn
http://6F8OtVYe.wzwyz.cn
http://Mwr659WL.wzwyz.cn
http://6mRDcyW4.wzwyz.cn
http://bzKVMjk7.wzwyz.cn
http://Y4niCiSX.wzwyz.cn
http://gMM9w6KX.wzwyz.cn
http://g6S7eQg3.wzwyz.cn
http://dk0Wip6c.wzwyz.cn
http://cqNYWVuP.wzwyz.cn
http://sQLYI8M0.wzwyz.cn
http://Yf6boNqI.wzwyz.cn
http://AW96bASe.wzwyz.cn
http://mhkeyyge.wzwyz.cn
http://YNOWztdY.wzwyz.cn
http://www.dtcms.com/a/387484.html

相关文章:

  • 数据赋能,安全护航——D-QS工程造价数字化平台的数据治理与行业应用
  • Matplotlib 可视化:从基础绘图到高级定制
  • 知识管理与高效学习技术
  • 【AI总结】万字长文预警!Spring Boot 4 全景深度解析:从虚拟线程到声明式 HTTP 客户端,再到云原生最佳实践
  • 小杰机器学习(eight)——tensorflow进行线性回归——算法实现、数据加载、模型定义、模型保存与加载、查看网络结构。
  • 什么是网络安全态势感知
  • O3.6opencv风格迁移和人脸识别
  • uniapp h5本地域名调试解决跨域
  • IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章
  • vue和springboot和ngnix跨域问题
  • 云边云科技4G路由器:连锁门店智慧联网的可靠基石
  • Ubuntu修改环境变量
  • 3D影像地形图的制作:利用ArcGISPro
  • ZEMAX光学设计流程:从基础到复杂系统实战
  • Android 项目:画图白板APP开发(九)——撤销、恢复(覆盖前文所有功能)
  • 设计模式(C++)详解——组合模式(Composite Pattern)(2)
  • Android中获取用户的国家码
  • JVM性能优化总结
  • 【js】js将金额转千百十元角分的打印格式:
  • 硬件(十三)模拟转数字ADC转换
  • OpenEuler系统下部署MySQL数据库
  • 异步MySQL连接池实现
  • 用Python 连接 MySQL数据库测试实战脚本(文中含源代码)
  • vue中下载文件保存格式和加密方式
  • typescript和vue和node项目的构建打包部署
  • Chat2DB+cpolar组合突破物理限制,成为数据库查询新解
  • Power BI 组件 AI Chart 技术解析:自然语言驱动的可视化革新
  • 【Linux网络】网络传输基本流程
  • 【开题答辩全过程】以 Boss直聘网站数据分析与可视化为例,包含答辩的问题和答案
  • 基于 Node.js 的后端框架:NestJS 和 Express(一)