让Docker20运行在Ubuntu20里的Ubuntu20上

2022-05-30 14:29:06 浏览数 (1)

0) 前提

Ubuntu HOST 已经安装了 KVM 环境并工作良好。

1) 在 Ubuntu KVM HOST 上安装 ansible

代码语言:javascript复制
sudo apt install -y software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install -y ansible

2) 安装其它相关工具包

代码语言:javascript复制
sudo apt install -y --no-install-recommends 
dnsmasq 
git 
genisoimage 
libguestfs-tools 
libosinfo-bin 
python3-libvirt 
python3-lxml 
qemu-utils 
virtinst

### 3) checkout virt-infra 代码库

这是ansible用于创建host、guest的playbook脚本和设置。

代码语言:javascript复制
mkdir ~/devenv_bootstrap

git clone https://github.com/dhyuan/virt-infra-ansible.git
cd virt-infra-ansible
git check -b devenv origin/devenv

cd roles
git clone https://github.com/dhyuan/ansible-role-virt-infra.git
git check -b devenv orign.devenv

4) 确保宿主机上有个网桥的名字与客户机定义文件所用网络名一致。

比如 inventory/ubuntu20Server.yml 中我们定义了网桥网络使用 br0。

代码语言:javascript复制
virt_infra_networks:
        - name: br0

5) 使用 ansible 在 ubuntu 宿主机上安装客户机

在http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 下载镜像保持到 host 的 /var/lib/libvirt/images 目录。确保 kvmhost 上的/etc/hosts 中没有定义对 ubuntu20Server 的 ip 映射。注意修改ubuntu20Server中的mac避免冲突。

代码语言:javascript复制
apt install -y ansible
ansible-playbook --limit kvmhost,ubuntu20Server ./virt-infra.yml

删除已安装guest虚拟机的命令:

代码语言:javascript复制
ansible-playbook ./virt-infra.yml --limit kvmhost,ubuntu20Server --extra-vars virt_infra_state=undefined

6) 创建完毕,通过 virt-manager 启动客户机。

测试网络的连通性,在 kvmhost 上 ping ubuntu20Server。有问题可以通过 ip 命令查看,进行必要的网卡启动等操作、检查/etc/netplan/....yml 文件、执行 netplan apply 等操作。

7) 下载在 VM 安装 Docker 的脚本,并安装

在 kvmhost 上执行:

代码语言:javascript复制
ansible-galaxy install 
--roles-path ~/.ansible/roles/ 
git https://github.com/haxorof/ansible-role-docker-ce.git,3.3.2

ansible-galaxy list

~/devenv_bootstrap/virt-infra-ansible/install_docker.yml 里定义了 ansbile 所用配置。执行以下语句,将在第五步创建的 VM ubuntu20Server 中安装 Docker 20.10.4。

代码语言:javascript复制
ansible-playbook ./install_docker.yml --limit ubuntu20Server -v --extra-vars docker_version=5:20.10.4~3-0~ubuntu-focal

可以通过 docker_users 参数指定加入 docker group 的用户,使用 ali 镜像下载 docker 安装包:

代码语言:javascript复制
ansible-playbook ./install_docker.yml 
--limit ubuntu20Server -v 
--extra-vars docker_version=5:20.10.4~3-0~ubuntu-focal 
--extra-vars '{"docker_users": ["devops"] }' 
-e '{"docker_repository_url": {"Ubuntu20": "http://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/Release"}}'

登录到guest虚机ubuntu20Server验证docker工作正常。

0 人点赞