
01. Docker 简介与安装1. 什么是 DockerDocker 是一个开源的容器化平台它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中然后发布到任何支持 Docker 的系统上。1.1 容器 vs 虚拟机┌─────────────────────────────────────────────────────────────┐ │ 容器 vs 虚拟机 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 虚拟机架构 容器架构 │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ App A │ App B │ App A │ App B │ │ ├─────────────┤ ├─────────────┤ │ │ │ Bins/Libs │ Bins/Libs │ Bins/Libs │ Bins/Libs │ │ ├─────────────┤ ├─────────────┤ │ │ │ Guest OS │ Guest OS │ │ │ │ ├─────────────┤ │ Docker │ │ │ │ Hypervisor │ │ Engine │ │ │ ├─────────────┤ ├─────────────┤ │ │ │ Host OS │ │ Host OS │ │ │ └─────────────┘ └─────────────┘ │ │ │ │ 特点 特点 │ │ - 资源占用大 - 轻量级 │ │ - 启动慢分钟级 - 启动快秒级 │ │ - 完全隔离 - 进程级隔离 │ │ - 每个 VM 有独立 OS - 共享宿主机 OS │ │ │ └─────────────────────────────────────────────────────────────┘1.2 Docker 的优势优势说明一致性开发、测试、生产环境一致可移植性一次构建到处运行隔离性进程级资源隔离轻量级共享宿主机内核快速启动毫秒级启动时间易于扩展轻松横向扩展2. Docker 发展历史时间里程碑2013年Docker 项目开源2014年Docker 1.0 发布2015年成立 OCI开放容器倡议2017年Moby 项目拆分2020年Kubernetes 弃用 Dockershim至今成为容器化标准3. Docker 架构┌─────────────────────────────────────────────────────────────┐ │ Docker 架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ ┌─────────────────────────┐ │ │ │ Docker │ CLI │ Docker Daemon │ │ │ │ Client │ ──────→ │ (dockerd) │ │ │ └─────────┘ REST ├─────────────────────────┤ │ │ API │ ┌─────────┐ │ │ │ │ │ containerd │ │ │ │ ┌─────────┐ │ └────┬────┘ │ │ │ │ Docker │ │ │ │ │ │ │ Registry│ ←────── │ ┌────▼────┐ │ │ │ └─────────┘ │ │ runc │ │ │ │ │ └─────────┘ │ │ │ └─────────────────────────┘ │ │ │ │ 组件说明 │ │ - Docker Client用户交互入口 │ │ - Docker Daemon管理容器、镜像、网络 │ │ - containerd容器运行时 │ │ - runc容器创建和运行 │ │ - Registry镜像仓库 │ └─────────────────────────────────────────────────────────────┘4. Docker 安装4.1 Linux 安装Ubuntu/Debian# 1. 更新软件包索引sudoapt-getupdate# 2. 安装依赖包sudoapt-getinstall-y\ca-certificates\curl\gnupg\lsb-release# 3. 添加 Docker 官方 GPG 密钥sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpg# 4. 设置仓库echo\deb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release-cs)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/null# 5. 安装 Docker Enginesudoapt-getupdatesudoapt-getinstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin# 6. 启动 Dockersudosystemctl startdockersudosystemctlenabledocker# 7. 验证安装sudodockerrun hello-world4.2 Linux 安装CentOS/RHEL# 1. 卸载旧版本sudoyum removedockerdocker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 2. 安装依赖sudoyuminstall-yyum-utils# 3. 添加仓库sudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4. 安装 Dockersudoyuminstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin# 5. 启动 Dockersudosystemctl startdockersudosystemctlenabledocker# 6. 验证sudodockerrun hello-world4.3 macOS 安装# 方法1使用 Homebrewbrewinstalldockerdocker-compose# 方法2下载 Docker Desktop# 访问 https://www.docker.com/products/docker-desktop/# 下载 .dmg 文件并安装# 验证安装docker--versiondocker-compose--version4.4 Windows 安装# 1. 启用 WSL 2# 以管理员身份运行 PowerShellwsl--install# 2. 下载 Docker Desktop for Windows# 访问 https://www.docker.com/products/docker-desktop/# 3. 安装并重启# 4. 验证docker--version5. 配置镜像加速器5.1 国内常用镜像源镜像源地址阿里云https://.mirror.aliyuncs.com腾讯云https://mirror.ccs.tencentyun.com中科大https://docker.mirrors.ustc.edu.cn网易https://hub-mirror.c.163.com5.2 配置镜像加速# 创建配置目录sudomkdir-p/etc/docker# 编辑配置文件sudotee/etc/docker/daemon.json-EOF { registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ], log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF# 重启 Dockersudosystemctl daemon-reloadsudosystemctl restartdocker# 验证配置dockerinfo|grep-A5Registry Mirrors6. 验证安装6.1 基础验证命令# 查看 Docker 版本docker--version# Docker version 24.0.7, build afdd53b# 查看详细版本信息dockerversion# 查看 Docker 系统信息dockerinfo# 运行测试容器dockerrun hello-world# 查看运行的容器dockerps# 查看所有容器dockerps-a# 查看镜像列表dockerimages6.2 配置非 root 用户运行# 创建 docker 用户组sudogroupadddocker# 将当前用户加入 docker 组sudousermod-aGdocker$USER# 重新登录或执行newgrpdocker# 验证dockerrun hello-world7. 第一个容器# 运行 Nginx 容器dockerrun-d-p8080:80--namemy-nginx nginx# 访问测试curlhttp://localhost:8080# 查看容器日志dockerlogs my-nginx# 进入容器dockerexec-itmy-nginxbash# 停止容器dockerstop my-nginx# 删除容器dockerrmmy-nginx8. 常用命令速查命令说明docker --version查看版本docker info系统信息docker run运行容器docker ps查看运行容器docker ps -a查看所有容器docker images查看镜像docker pull拉取镜像docker rmi删除镜像docker rm删除容器docker stop/start停止/启动容器docker logs查看日志docker exec进入容器9. 常见问题Q1: 权限不足Permission denied# 方法1使用 sudosudodockerrun hello-world# 方法2将用户加入 docker 组sudousermod-aGdocker$USERnewgrpdockerQ2: 镜像拉取超时# 配置镜像加速器后重试# 或使用代理exportHTTP_PROXYhttp://proxy-url:portexportHTTPS_PROXYhttp://proxy-url:portQ3: 端口已被占用# 查看端口占用sudolsof-i:8080# 更换端口映射dockerrun-d-p8081:80 nginx10. 小结Docker是轻量级容器化平台容器比虚拟机更轻量、启动更快支持主流操作系统安装配置镜像加速器提升拉取速度掌握基础命令即可开始使用