Docker 完整安装 + 基础使用教程

一、Docker 介绍

Docker 是容器化工具,把应用、依赖、环境打包成镜像,一次打包到处运行,隔离环境、部署简单。 分为三部分:

  1. Docker Engine:核心引擎(服务端)
  2. Docker CLI:命令行客户端
  3. 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)

  1. 开启 WSL2 虚拟机 设置 → 应用 → 可选功能 → 勾选「适用于 Linux 的 Windows 子系统」「虚拟机平台」,重启电脑

  2. 安装 WSL2 默认内核

    wsl --install

  3. 官网下载 Docker Desktop https://www.docker.com/products/docker-desktop/

  4. 安装后打开,终端直接使用 dockerdocker compose

4. MacOS

  1. 官网下载 Docker Desktop(Intel/M1/M2 区分版本)
  2. 拖拽安装,启动后终端直接执行 docker 命令

三、Docker 核心基础概念

  1. 镜像 (image):只读模板,打包好的环境(如 nginx、mysql)
  2. 容器 (container):镜像运行后的实例,独立运行程序
  3. 仓库 (hub):存放镜像,默认 Docker Hub
  4. Dockerfile:自定义镜像的构建脚本
  5. 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

  1. 新建 Dockerfile 文件

    FROM nginx
    COPY index.html /usr/share/nginx/html/

  2. 构建自定义镜像

    docker build -t my-nginx:v1 .

  3. 运行自定义镜像

    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

七、常见问题

  1. docker 命令提示 permission denied 解决:执行 sudo usermod -aG docker $USER 后重新登录终端
  2. 端口占用 修改 -p 主机端口:容器端口 的主机端口,如 8081:80
  3. 容器重启数据丢失 必须使用 -v 挂载数据卷持久化
  4. 国内拉取镜像慢 配置镜像加速器(阿里云 / 网易镜像源)