4. Docker容器化部署基础
任务目标
在边缘设备(以Ubuntu 22.04 ARM64为例)上完成Docker引擎的安装,验证安装正确性,并配置Docker服务开机自启,最终通过运行hello-world容器确认容器运行时工作正常。
环境与依赖
- 操作系统:Ubuntu 22.04 LTS(ARM64架构,适用于树莓派、RK3588等边缘设备)
- 内核要求:Linux内核版本≥3.10(Ubuntu 22.04默认满足)
- 网络:需能访问Docker官方APT仓库(或使用镜像源)
- 权限:当前用户需具有
sudo权限
安装与配置步骤
以下命令在设备终端中按顺序执行。使用Docker官方APT仓库安装,确保获取最新稳定版本。
# 1. 更新软件包索引并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# 2. 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 3. 添加Docker APT仓库(自动检测架构)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 5. 将当前用户加入docker组(免sudo执行docker命令)
sudo usermod -aG docker $USER
newgrp docker # 使组变更立即生效(或重新登录)
验证安装与运行hello-world
安装完成后,执行以下命令验证Docker引擎状态并运行测试容器:
# 检查Docker服务运行状态
sudo systemctl status docker --no-pager
# 运行hello-world容器(首次运行会自动拉取镜像)
docker run hello-world
预期输出:若安装正确,docker run hello-world会输出一段欢迎信息,包含“Hello from Docker!”字样,并说明您的安装似乎正确工作。该输出由镜像内程序直接打印,是Docker引擎正常工作的确定性标志。
配置开机自启
Docker安装后默认已启用开机自启。若需确认或重新启用,执行:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
验证自启配置是否生效:
sudo systemctl is-enabled docker.service输出应为
enabled,表示Docker服务已配置为开机自动启动。验证方法与判定标准
- 安装验证:
docker --version能输出版本号(如Docker version 27.x.x),且sudo systemctl status docker显示active (running)。- 功能验证:
docker run hello-world成功输出欢迎信息,无错误退出,即证明容器运行时正常工作。- 自启验证:
sudo systemctl is-enabled docker.service返回enabled。重启设备后,执行docker ps不报“无法连接”错误,说明服务已随系统自动启动。常见问题
- 拉取镜像超时:若网络无法访问Docker Hub,可配置镜像加速器(如编辑
/etc/docker/daemon.json添加registry-mirrors字段),然后执行sudo systemctl restart docker。 - 权限错误:若
docker run提示permission denied,说明当前用户不在docker组中,重新执行sudo usermod -aG docker $USER并注销重登。 - 架构不匹配:在ARM64设备上安装x86镜像会报
exec format error,需拉取arm64v8标签或支持多架构的镜像。