Docker和Docker Compose怎么入门?

文章导读
入门 Docker 和 Docker Compose,建议先在本地安装 Docker 后用单个容器练手,熟悉镜像、容器、端口映射等核心概念后再用 Compose 编排多服务,这样学习曲线更平缓且问题容易定位。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

入门 Docker 和 Docker Compose,建议先在本地安装 Docker 后用单个容器练手,熟悉镜像、容器、端口映射等核心概念后再用 Compose 编排多服务,这样学习曲线更平缓且问题容易定位。

先说结论:Docker 适合解决环境一致性和快速部署问题,Docker Compose 适合管理多容器应用,新手应按「安装→单容器→多容器编排」的顺序学习。

  • 适合:开发测试环境、单机部署、微服务本地联调
  • 先看:镜像与容器区别、端口映射、数据卷持久化
  • 建议:先在本地跑通官方镜像,再尝试自定义 Dockerfile,最后用 Compose 编排多服务

命令速用版

下面是经过验证的基础命令,可直接在 Linux 终端执行:

docker `--version`                    # 查看 Docker 版本
docker pull nginx:latest            # 拉取官方镜像
docker run -d -p 8080:80 nginx      # 启动容器,主机 8080 映射容器 80
docker ps                           # 查看运行中的容器
docker logs <容器 ID>                # 查看容器日志
docker-compose `--version`            # 查看 Compose 版本
docker-compose up -d                # 后台启动所有服务
docker-compose down                 # 停止并清理容器、网络

为什么会这样

Docker 的本质是容器化引擎,它把代码、运行环境、依赖库、配置文件打包到一个叫「镜像」的标准化盒子里。这个盒子在任何安装了 Docker 的机器上都能一键运行,不用考虑底层系统和环境差异。

新手常混淆的 4 个核心概念:

Docker和Docker Compose怎么入门?
  • 镜像 (Image):只读的模板,类似软件安装包,不能直接修改
  • 容器 (Container):基于镜像创建的运行实例,可以启动、停止、删除
  • Dockerfile:文本文件,定义如何构建自定义镜像
  • 数据卷 (Volume):用于持久存储数据,容器删除后数据不丢失

Docker Compose 则是多容器编排工具,通过一个 YAML 文件定义多个服务的配置,用单个命令就能创建和启动所有容器。它管理三个层级:工程(运行目录)、服务(子项目)、容器(服务实例)。

分步处理

第一步:安装 Docker

在基于 Linux 内核的系统中,可使用官方一键安装脚本:

curl -fsSL https://get.docker.com | bash -s docker
sudo systemctl enable docker
sudo systemctl start docker
docker version

检查点:执行docker version后应显示 Client 和 Server 版本信息,无报错即安装成功。

第二步:跑通第一个容器

从官方仓库拉取 Nginx 镜像并启动:

Docker和Docker Compose怎么入门?
docker pull nginx:latest
docker run -d -p 8080:80 `--name` my-nginx nginx
curl http://localhost:8080

检查点:浏览器访问http://localhost:8080能看到 Nginx 欢迎页,说明端口映射成功。

第三步:编写自定义 Dockerfile

以 SpringBoot 应用为例,在项目根目录创建 Dockerfile:

FROM openjdk:8
EXPOSE 8080
ADD target/myapp-0.0.1-SNAPSHOT.jar /demo.jar
ENTRYPOINT ["java", "-jar", "demo.jar"]

构建并运行:

Docker和Docker Compose怎么入门?
docker build -t myapp:latest .
docker run -d -p 8080:8080 myapp

检查点:docker images能看到自定义镜像,docker ps能看到运行中的容器。

第四步:用 Compose 编排多服务

在项目根目录创建docker-compose.yml

version: "3.9"
services:
  myapp:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

启动服务:

docker-compose up -d
docker-compose ps

检查点:两个容器都应处于 Up 状态,应用能正常连接数据库。

怎么验证是否生效

  • 容器状态docker psdocker-compose ps查看容器是否 Running
  • 端口访问:浏览器或 curl 访问映射端口,确认服务响应
  • 日志检查docker logs <容器 ID>docker-compose logs 服务名查看有无报错
  • 数据持久化:删除容器后重新创建,检查数据卷中的数据是否还在
  • 服务依赖:确认 depends_on 配置的服务先启动,应用能正常连接

常见坑

  • 容器能启动但外部访问不到:检查端口映射是否正确,防火墙是否放行,容器内服务是否监听 0.0.0.0 而非 127.0.0.1
  • 容器删除后数据全丢:重要数据必须挂载数据卷,不要直接写在容器文件系统里
  • 镜像体积过大:使用多阶段构建,把编译环境和运行环境分开,最终镜像只保留可执行文件
  • 服务之间连不上:Compose 会自动创建默认网络,服务名可直接作为主机名访问,不要写 localhost
  • 配置文件没生效:检查 volumes 挂载路径是否正确,容器内路径要与应用配置一致
  • Compose 版本兼容性:docker-compose.yml 的 version 字段与 Docker Compose 版本需匹配,公开资料中没有看到可靠的量化数据说明各版本差异,建议参考官方文档

参考来源

  • Docker 官方文档 - Get started with Docker Compose,URL:https://docs.docker.com/compose/
  • 阿里云开发者社区 - docker-compose 快速入门及实战,发布日期:2022 年 10 月 23 日
  • CSDN - Docker 与 Docker Compose 入门:释放你的应用部署的威力,收录日期:2024 年 1 月 18 日
  • 博客园 - 云原生之 Docker 篇 Docker Compose 介绍及使用入门,发布日期:2022 年 10 月 11 日
  • 知乎 - Docker Compose:从入门到企业级部署,资料日期:2025 年 7 月 18 日