尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Amazon Linux 2023 AMI安装Docker保姆级教程(含常见问题排查)

Amazon Linux 2023 AMI安装Docker保姆级教程(含常见问题排查) Amazon Linux 2023 AMI安装Docker保姆级教程含常见问题排查在云计算和容器化技术蓬勃发展的今天掌握Docker的安装与使用已成为开发者的必备技能。作为AWS生态中的新一代操作系统Amazon Linux 2023 AMI以其优化的性能和安全性备受青睐但其软件包管理方式与之前的版本有所不同这让不少初次接触的用户在安装Docker时遇到困惑。本文将手把手带你完成从系统准备到Docker运行的全过程并针对可能出现的各种问题提供解决方案确保即使是零基础用户也能顺利搭建开发环境。1. 环境准备与系统更新在开始安装Docker之前我们需要确保系统处于最新状态并具备必要的依赖环境。Amazon Linux 2023 AMI基于Fedora构建采用dnf作为默认包管理器这与Amazon Linux 2的yum有所不同。首先通过SSH连接到您的EC2实例。如果是全新实例建议先执行全面更新sudo dnf update -y这个命令会更新所有已安装的软件包到最新版本通常需要3-5分钟时间取决于系统更新量。完成后建议重启实例以确保所有更新生效sudo reboot系统重启后我们需要安装一些基础工具包这些将为后续Docker安装提供支持sudo dnf install -y tar bzip2 gzip unzip curl which注意Amazon Linux 2023默认不再包含一些传统工具如ifconfig等如需网络诊断工具可额外安装net-tools包。验证系统版本信息也很重要确保我们确实在使用Amazon Linux 2023cat /etc/os-release正确输出应包含类似以下信息NAMEAmazon Linux VERSION2023 IDamzn ID_LIKEfedora VERSION_ID20232. Docker安装与配置2.1 安装Docker引擎Amazon Linux 2023的软件仓库已经包含了稳定版的Docker CE社区版安装过程比前代更简单直接。执行以下命令开始安装sudo dnf install -y docker安装完成后系统会自动创建docker用户组但服务默认不会启动。我们可以通过以下命令查看Docker安装版本docker --version如果此时提示权限被拒绝这是正常现象因为我们尚未启动服务或配置用户权限。2.2 服务管理与开机启动启动Docker服务并设置为开机自动启动sudo systemctl start docker sudo systemctl enable docker验证服务状态sudo systemctl status docker正常运行的输出应包含active (running)字样。如果状态显示为inactive或failed请跳转到第4章的问题排查部分。2.3 用户权限配置默认情况下只有root用户和docker组用户才能执行Docker命令。将当前用户通常是ec2-user加入docker组sudo usermod -aG docker $USER重要提示权限变更需要重新登录才能生效。最简单的方法是断开SSH连接后重新登录或者执行以下命令newgrp docker验证权限配置是否成功docker run hello-world如果看到Hello from Docker!的欢迎信息说明安装配置成功。第一次运行会下载测试镜像可能需要几秒钟时间。3. 进阶配置与优化3.1 存储驱动选择Amazon Linux 2023默认使用overlay2存储驱动这是目前最稳定高效的选项。可以通过以下命令验证docker info | grep Storage Driver如果需要修改存储驱动如某些特殊场景需要devicemapper可编辑配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json EOF { storage-driver: overlay2 } EOF然后重启Docker服务使配置生效sudo systemctl restart docker3.2 日志与数据管理默认情况下Docker的日志和容器数据会存储在/var/lib/docker目录。对于生产环境建议考虑以下优化日志轮转防止日志文件无限增长sudo tee /etc/docker/daemon.json EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF数据目录迁移如果/var分区空间有限可以将Docker数据迁移到更大的挂载点sudo systemctl stop docker sudo rsync -a /var/lib/docker /new/location/ sudo mv /var/lib/docker /var/lib/docker.bak sudo ln -s /new/location/docker /var/lib/docker sudo systemctl start docker3.3 网络与安全配置Amazon Linux 2023默认启用了firewalld服务可能会影响Docker网络。建议配置防火墙规则sudo firewall-cmd --permanent --zonepublic --add-interfacedocker0 sudo firewall-cmd --permanent --zonepublic --add-port2375/tcp sudo firewall-cmd --reload对于生产环境还应考虑启用用户命名空间隔离以提高安全性sudo tee /etc/docker/daemon.json EOF { userns-remap: default } EOF4. 常见问题排查指南4.1 安装失败问题问题现象执行dnf install docker时出现依赖错误或找不到包解决方案首先确保系统已更新sudo dnf update -y检查可用仓库sudo dnf repolist应能看到amzn2023-core仓库尝试清理缓存后重试sudo dnf clean all sudo dnf install -y docker4.2 权限相关问题问题现象执行docker命令时提示Got permission denied排查步骤确认用户已加入docker组groups | grep docker如果未显示docker组重新执行添加命令并重新登录sudo usermod -aG docker $USER exit然后重新SSH登录检查docker.sock权限ls -l /var/run/docker.sock正确权限应为srw-rw----且组为docker4.3 服务启动失败问题现象systemctl status docker显示failed状态诊断方法查看详细日志journalctl -u docker --no-pager -n 50常见原因及解决存储驱动不兼容检查docker info中的Storage Driver磁盘空间不足执行df -h查看/var分区使用情况SELinux冲突尝试临时禁用测试sudo setenforce 0 sudo systemctl start docker4.4 网络连接问题问题现象无法拉取镜像或容器无法访问外网排查方案检查DNS配置docker run busybox nslookup example.com如果DNS解析失败可指定DNS服务器sudo tee /etc/docker/daemon.json EOF { dns: [8.8.8.8, 1.1.1.1] } EOF检查防火墙规则sudo firewall-cmd --list-all5. 实用技巧与最佳实践5.1 镜像加速配置国内用户访问Docker Hub可能较慢可以配置镜像加速器。以阿里云加速器为例sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json EOF { registry-mirrors: [https://your-aliyun-id.mirror.aliyuncs.com] } EOF sudo systemctl restart docker5.2 资源限制设置为防止单个容器占用过多资源可以设置默认限制sudo tee /etc/docker/daemon.json EOF { default-ulimits: { nofile: { Name: nofile, Hard: 65535, Soft: 20000 } } } EOF5.3 日常维护命令一些有用的维护命令清理无用镜像docker image prune -a查看磁盘使用docker system df批量停止容器docker stop $(docker ps -q)查看容器IPdocker inspect -f {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}} 容器名5.4 与AWS服务集成Amazon Linux 2023与AWS服务深度集成可以方便地使用ECR弹性容器注册表# 登录ECR aws ecr get-login-password | docker login --username AWS --password-stdin account-id.dkr.ecr.region.amazonaws.com # 拉取私有镜像 docker pull account-id.dkr.ecr.region.amazonaws.com/镜像名:标签
返回列表