01. Docker 简介与安装 1. 什么是 Docker Docker 是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何支持 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. 更新软件包索引 sudo apt-get update# 2. 安装依赖包 sudo apt-get install -y \ ca-certificates\ curl \ gnupg\ lsb-release# 3. 添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg| sudo gpg--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" | sudo tee /etc/apt/sources.list.d/docker.list> /dev/null# 5. 安装 Docker Engine sudo apt-get updatesudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 6. 启动 Docker sudo systemctl startdocker sudo systemctlenable docker # 7. 验证安装 sudo docker run hello-world4.2 Linux 安装(CentOS/RHEL) # 1. 卸载旧版本 sudo yum removedocker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 2. 安装依赖 sudo yuminstall -y yum-utils# 3. 添加仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4. 安装 Docker sudo yuminstall -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 5. 启动 Docker sudo systemctl startdocker sudo systemctlenable docker # 6. 验证 sudo docker run hello-world4.3 macOS 安装 # 方法1:使用 Homebrew brewinstall docker docker-compose # 方法2:下载 Docker Desktop # 访问 https://www.docker.com/products/docker-desktop/ # 下载 .dmg 文件并安装 # 验证安装 docker --version docker-compose --version 4.4 Windows 安装 # 1. 启用 WSL 2 # 以管理员身份运行 PowerShell wsl--install # 2. 下载 Docker Desktop for Windows # 访问 https://www.docker.com/products/docker-desktop/ # 3. 安装并重启 # 4. 验证 docker --version 5. 配置镜像加速器 5.1 国内常用镜像源 镜像源 地址 阿里云 https://.mirror.aliyuncs.com 腾讯云 https://mirror.ccs.tencentyun.com 中科大 https://docker.mirrors.ustc.edu.cn 网易 https://hub-mirror.c.163.com
5.2 配置镜像加速 # 创建配置目录 sudo mkdir -p /etc/docker# 编辑配置文件 sudo tee /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 # 重启 Docker sudo systemctl daemon-reloadsudo systemctl restartdocker # 验证配置 docker info| grep -A 5 "Registry Mirrors" 6. 验证安装 6.1 基础验证命令 # 查看 Docker 版本 docker --version # Docker version 24.0.7, build afdd53b # 查看详细版本信息 docker version# 查看 Docker 系统信息 docker info# 运行测试容器 docker run hello-world# 查看运行的容器 docker ps # 查看所有容器 docker ps -a # 查看镜像列表 docker images6.2 配置非 root 用户运行 # 创建 docker 用户组 sudo groupadd docker # 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 重新登录或执行 newgrpdocker # 验证 docker run hello-world7. 第一个容器 # 运行 Nginx 容器 docker run-d -p 8080 :80--name my-nginx nginx# 访问测试 curl http://localhost:8080# 查看容器日志 docker logs my-nginx# 进入容器 docker exec -it my-nginxbash # 停止容器 docker stop my-nginx# 删除容器 docker rm my-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:使用 sudo sudo docker run hello-world# 方法2:将用户加入 docker 组 sudo usermod -aG docker $USER newgrpdocker Q2: 镜像拉取超时 # 配置镜像加速器后重试 # 或使用代理 export HTTP_PROXY = http://proxy-url:portexport HTTPS_PROXY = http://proxy-url:portQ3: 端口已被占用 # 查看端口占用 sudo lsof -i :8080# 更换端口映射 docker run-d -p 8081 :80 nginx10. 小结 Docker 是轻量级容器化平台容器 比虚拟机更轻量、启动更快支持主流操作系统安装 配置镜像加速器提升拉取速度 掌握基础命令即可开始使用