一、Docker 介绍
Docker 是容器化工具,把应用、依赖、环境打包成镜像,一次打包到处运行,隔离环境、部署简单。 分为三部分:
- Docker Engine:核心引擎(服务端)
- Docker CLI:命令行客户端
- Docker Compose:多容器编排工具(推荐一并安装)
二、各系统安装 Docker
1. Ubuntu / Debian(Linux 主流)
1)卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc
2)安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
3)添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4)添加软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.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 + Compose
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
6)免 sudo 运行 docker(必做)
sudo usermod -aG docker $USER
# 生效:重新登录服务器/终端
newgrp docker
7)验证安装
docker -v
docker compose version
# 测试运行容器
docker run hello-world
2. CentOS / Rocky Linux / RHEL
# 卸载旧版
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装源工具
yum install -y yum-utils
# 添加docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动开机自启
systemctl start docker
systemctl enable docker
# 免sudo
usermod -aG docker $USER
newgrp docker
# 验证
docker run hello-world
3. Windows 系统(Win10/11 专业版 / 家庭版)
方案:Docker Desktop(图形化,自带 compose)
-
开启 WSL2 虚拟机 设置 → 应用 → 可选功能 → 勾选「适用于 Linux 的 Windows 子系统」「虚拟机平台」,重启电脑
-
安装 WSL2 默认内核
wsl --install
-
官网下载 Docker Desktop https://www.docker.com/products/docker-desktop/
-
安装后打开,终端直接使用
docker、docker compose
4. MacOS
- 官网下载 Docker Desktop(Intel/M1/M2 区分版本)
- 拖拽安装,启动后终端直接执行 docker 命令
三、Docker 核心基础概念
- 镜像 (image):只读模板,打包好的环境(如 nginx、mysql)
- 容器 (container):镜像运行后的实例,独立运行程序
- 仓库 (hub):存放镜像,默认 Docker Hub
- Dockerfile:自定义镜像的构建脚本
- Volume:数据卷,持久化容器数据(容器删除数据不丢)
四、Docker 高频常用命令
1. 镜像操作
# 拉取镜像
docker pull nginx
# 查看本地镜像
docker images
# 删除镜像
docker rmi 镜像ID/镜像名
# 搜索镜像
docker search mysql
# 导出镜像
docker save -o nginx.tar nginx
# 导入镜像
docker load -i nginx.tar
2. 容器运行(重点)
# 最简运行nginx
docker run nginx
# 常用完整参数示例(端口映射+后台运行+命名+数据卷)
# -d 后台运行
# --name 容器名
# -p 主机端口:容器端口 端口映射
# -v 主机目录:容器目录 数据持久化
# --restart always 开机自启
docker run -d --name mynginx -p 8080:80 -v /data/nginx/html:/usr/share/nginx/html --restart always nginx
3. 容器管理
# 查看运行中容器
docker ps
# 查看所有容器(含停止)
docker ps -a
# 停止容器
docker stop 容器名/ID
# 重启容器
docker restart 容器名/ID
# 删除停止的容器
docker rm 容器名/ID
# 进入容器终端
docker exec -it mynginx /bin/bash
# 查看容器日志
docker logs mynginx
# 实时日志
docker logs -f mynginx
4. 数据卷 Volume
# 创建数据卷
docker volume create mysql-data
# 挂载运行
docker run -d -v mysql-data:/var/lib/mysql mysql
# 查看所有卷
docker volume ls
# 删除无用卷
docker volume prune
5. 镜像构建 Dockerfile
-
新建
Dockerfile文件FROM nginx
COPY index.html /usr/share/nginx/html/ -
构建自定义镜像
docker build -t my-nginx:v1 .
-
运行自定义镜像
docker run -d -p 80:80 my-nginx:v1
五、Docker Compose 多容器编排(开发 / 部署必备)
适合同时启动 mysql + redis + nginx + 项目等多个容器
1. 编写 docker-compose.yml
示例:nginx + mysql
version: "3.8"
services:
nginx:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: testdb
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
mysql-data:
2. Compose 命令
# 后台启动所有服务
docker compose up -d
# 查看运行容器
docker compose ps
# 查看日志
docker compose logs -f
# 停止服务(不删除容器数据)
docker compose stop
# 停止并删除容器(数据卷保留)
docker compose down
# 删除容器+数据卷
docker compose down -v
# 重启单个服务
docker compose restart mysql
六、Docker 服务管理(Linux)
# 启动docker服务
systemctl start docker
# 停止
systemctl stop docker
# 开机自启
systemctl enable docker
# 查看状态
systemctl status docker
# 重启docker
systemctl restart docker
七、常见问题
- docker 命令提示 permission denied 解决:执行
sudo usermod -aG docker $USER后重新登录终端 - 端口占用 修改
-p 主机端口:容器端口的主机端口,如 8081:80 - 容器重启数据丢失 必须使用
-v挂载数据卷持久化 - 国内拉取镜像慢 配置镜像加速器(阿里云 / 网易镜像源)