一、Docker 概述
1.1 什么是 Docker?
Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵从 Apache2.0 协议开源。它可以让开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现虚拟化。
Docker 的核心价值:一次构建、随处运行
- 更快速的应用交付和部署
- 更便捷的升级和扩缩容
- 更简单的系统运维
- 更高效的计算资源利用
1.2 Docker 核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| 镜像 (Image) | 只读的模板,用于创建容器 | 类(面向对象) |
| 容器 (Container) | 镜像的运行实例,可独立运行应用 | 对象(面向对象) |
| 仓库 (Repository) | 集中存放镜像的场所 | 代码仓库 |
Docker 架构组件:
- Docker 主机 (Host):执行 Docker 守护进程和容器的物理或虚拟机
- Docker 客户端 (Client):通过命令行与 Docker 守护进程通信
- Docker Registry:存储镜像的服务,如 Docker Hub、阿里云镜像仓库
二、 环境准备与卸载旧版本
系统要求
Docker 支持以下 64 位 Linux 发行版:
- CentOS 7/8 及更高版本
- Ubuntu 16.04 及更高版本
- Debian、Fedora 等主流发行版
在安装之前,建议先卸载系统中可能存在的旧版本 Docker,以避免冲突。
# 更新包索引
sudo apt-get update # Ubuntu/Debian
# 或
sudo yum update # CentOS/RHEL
# 卸载可能存在的旧版本
sudo apt-get remove -y docker docker-engine docker.io containerd runc
# 或 CentOS 命令:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
三、 安装 Docker 引擎
根据你的 Linux 发行版,选择以下任一种方式进行安装。
方法 A:Ubuntu/Debian 安装步骤
# 1. 安装依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 2. 添加官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 3. 设置稳定版仓库
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
# 4. 安装 Docker Engine、CLI、Containerd
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
方法 B:CentOS/RHEL 安装步骤
# 1. 安装 yum-utils 工具
sudo yum install -y yum-utils
# 2. 配置 Docker 稳定版仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 3. 安装 Docker 引擎及插件
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 4. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
方法 C:一键脚本安装(通用推荐)
如果不想手动配置,可以使用官方或国内源的一键脚本:
# 官方脚本(海外服务器使用)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 阿里云脚本(国内推荐)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
四、配置镜像加速(推荐)
由于 Docker Hub 的官方镜像位于海外,国内拉取镜像速度较慢。建议配置阿里云或华为云的镜像加速器。
-
获取加速器地址:
- 登录 阿里云容器镜像服务控制台。
- 在"实例设置"或"镜像工具"中找到"镜像加速器",复制你的专属地址(如
https://xxxx.mirror.aliyuncs.com)。
-
配置 Docker Daemon :
创建或编辑配置文件
/etc/docker/daemon.jsonsudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://xxxx.mirror.aliyuncs.com", // 替换为你的阿里云加速地址 "https://docker.mirrors.ustc.edu.cn", // 中科大备用 "https://hub-mirror.c.163.com" // 网易备用 ] } EOF -
重启 Docker 生效
sudo systemctl daemon-reload sudo systemctl restart docker
五、免 sudo 权限配置
为了避免每次运行 docker 命令都需要加 sudo,将当前用户加入 docker 用户组:
# 创建 docker 组(如果不存在)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 刷新组权限(或重新登录终端)
newgrp docker
六、核心概念与常用命令
Docker 的核心概念包括 镜像 (Image) 、容器 (Container) 和 仓库 (Repository)。
镜像管理命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker images |
查看本地所有镜像 | docker images |
docker pull |
从仓库拉取镜像 | docker pull nginx:latest |
docker search |
搜索镜像 | docker search redis |
docker rmi |
删除本地镜像 | docker rmi nginx |
容器管理命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker run |
创建并启动容器 | docker run -d -p 80:80 --name my-nginx nginx |
docker ps |
查看运行中的容器 | docker ps |
docker ps -a |
查看所有容器(含停止的) | docker ps -a |
docker stop |
停止容器 | docker stop my-nginx |
docker start |
启动已停止的容器 | docker start my-nginx |
docker rm |
删除已停止的容器 | docker rm my-nginx |
docker exec |
进入运行中的容器 | docker exec -it my-nginx /bin/bash |
七、实战:部署 Nginx 服务
通过一个简单的例子验证安装是否成功。
-
拉取 Nginx 镜像
docker pull nginx:latest -
启动容器
docker run -d \ --name my-web \ -p 8080:80 \ -v $(pwd)/html:/usr/share/nginx/html \ nginx-d:后台守护进程运行。-p 8080:80:将宿主机的 8080 端口映射到容器的 80 端口。-v:挂载本地目录,实现数据持久化。
-
验证
在浏览器访问
http://<你的服务器IP>:8080,如果看到 "Welcome to nginx!" 页面,说明部署成功。
八、进阶:使用 Docker Compose
对于微服务架构,通常需要同时启动多个容器(如 Web + MySQL)。使用 Docker Compose 可以通过一个 YAML 文件定义和运行多容器应用。
1、安装 Docker Compose 插件(通常在安装引擎时已包含,如未安装)
# 安装最新版 Compose 插件
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
2、创建 docker-compose.yml
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
3、启动应用
docker compose up -d
这将以后台模式启动 Nginx 和 MySQL 两个容器。
九、常见问题排查
- 权限被拒绝 :如果提示
Got permission denied while trying to connect to the Docker daemon socket,请检查是否执行了sudo usermod -aG docker $USER并重新登录终端。 - 镜像拉取慢 :请务必检查
/etc/docker/daemon.json文件中的镜像加速器配置是否正确,并执行了systemctl restart docker。 - 端口冲突 :如果提示
port is already allocated,说明宿主机端口被占用,请更换映射端口(如-p 8081:80)。