一、Docker 核心概念(先理解,再动手)

这是 Docker 的底层逻辑,理解后操作会更清晰:

  1. 镜像(Image)
    • 类比:可以理解为一个 “软件安装包”(比如包含 Ubuntu 系统 + Python 环境 + 你的应用代码),是只读的、不可修改的模板。
    • 特点:分层存储(多个镜像可共享底层层,节省空间)、可通过 Dockerfile 构建。
  2. 容器(Container)
    • 类比:镜像运行起来的 “实例”,相当于基于安装包启动的 “独立软件环境”,是可读写的、独立的运行单元。
    • 特点:隔离性(容器间互不干扰)、轻量级(共享宿主机内核,比虚拟机快)、可启停 / 删除。
  3. 仓库(Repository)
    • 类比:存放镜像的 “网盘”(比如 Docker Hub 是官方公共仓库,也可搭建私有仓库)。
    • 常用操作:pull(拉取镜像)、push(推送镜像)。
  4. Dockerfile
    • 定义:一个文本文件,包含构建镜像的 “指令集”(比如指定基础镜像、安装依赖、复制代码、启动命令),是自动化构建镜像的核心。

二、Docker 基础操作(必掌握的命令)

先确保已安装 Docker(Windows/macOS 可装 Docker Desktop,Linux 可通过包管理器安装),验证安装:

bash

运行

docker --version  # 查看Docker版本
docker info       # 查看Docker系统信息
docker run hello-world  # 运行测试容器,验证环境正常
1. 镜像相关命令

表格

命令作用示例
docker pull <镜像名:版本>拉取镜像docker pull ubuntu:20.04(拉取 Ubuntu 20.04 镜像)
docker images查看本地所有镜像docker images(列出镜像名称、标签、ID、大小)
docker rmi <镜像ID/名称>删除镜像docker rmi ubuntu:20.04(删除指定镜像)
docker build -t <镜像名:标签> <Dockerfile路径>构建镜像docker build -t myapp:v1 .(基于当前目录的 Dockerfile 构建镜像)
2. 容器相关命令(最常用)

表格

命令作用示例
docker run [参数] <镜像名>创建并启动容器docker run -it ubuntu:20.04 /bin/bash(交互式启动 Ubuntu 容器,进入命令行)
关键参数说明:- -it:交互式 + 分配终端,用于进入容器操作- -d:后台运行容器(守护进程模式)- -p 宿主机端口:容器端口:端口映射(比如-p 8080:80)- -v 宿主机目录:容器目录:数据卷挂载(持久化数据)- --name 容器名:给容器命名(方便管理)
docker ps查看运行中的容器docker ps(加-a查看所有容器,包括停止的)
docker start/stop/restart <容器名/ID>启动 / 停止 / 重启容器docker start my-ubuntu
docker exec -it <容器名/ID> /bin/bash进入运行中的容器docker exec -it my-ubuntu /bin/bash
docker rm <容器名/ID>删除容器docker rm my-ubuntu(加-f强制删除运行中的容器)
docker logs <容器名/ID>查看容器日志docker logs -f my-app-f实时查看)

三、实战:用 Docker 运行一个简单的 Web 应用(Nginx)

通过这个案例,把基础命令串起来:

  1. 拉取 Nginx 镜像:

    bash

    运行

    docker pull nginx:latest
    
  2. 启动 Nginx 容器(端口映射 + 后台运行):

    bash

    运行

    docker run -d --name my-nginx -p 8080:80 nginx
    
  3. 验证:打开浏览器访问 http://localhost:8080,能看到 Nginx 默认页面即成功。
  4. 进入容器修改页面(体验容器操作):

    bash

    运行

    docker exec -it my-nginx /bin/bash
    # 进入容器后,修改默认页面
    echo "Hello Docker!" > /usr/share/nginx/html/index.html
    
  5. 刷新浏览器,能看到 “Hello Docker!”,验证修改生效。
  6. 停止并删除容器:

    bash

    运行

    docker stop my-nginx
    docker rm my-nginx
    

四、进阶入门(掌握后更实用)

  1. Dockerfile 编写:示例(构建一个包含 Python 的自定义镜像):

    dockerfile

    # 指定基础镜像
    FROM ubuntu:20.04
    # 维护者信息(可选)
    MAINTAINER yourname <your@email.com>
    # 安装Python
    RUN apt-get update && apt-get install -y python3 python3-pip
    # 设置工作目录
    WORKDIR /app
    # 复制本地文件到容器
    COPY ./app.py /app/
    # 启动命令
    CMD ["python3", "app.py"]
    

    构建命令:docker build -t my-python-app:v1 .

  2. 数据卷(Volume):解决容器删除后数据丢失的问题,比如挂载 Nginx 的网页目录:

    bash

    运行

    # 创建数据卷
    docker volume create nginx-data
    # 启动容器并挂载数据卷
    docker run -d --name my-nginx -p 8080:80 -v nginx-data:/usr/share/nginx/html nginx
    

    此时修改宿主机的数据卷目录(可通过docker volume inspect nginx-data查看路径),容器内的页面会同步更新。

  3. Docker Compose(多容器管理):当需要运行多个容器(比如前端 + 后端 + 数据库)时,用docker-compose.yml统一管理,示例:

    yaml

    version: '3'
    services:
      nginx:
        image: nginx:latest
        ports:
          - "8080:80"
        volumes:
          - nginx-data:/usr/share/nginx/html
      mysql:
        image: mysql:5.7
        environment:
          - MYSQL_ROOT_PASSWORD=123456
        volumes:
          - mysql-data:/var/lib/mysql
    volumes:
      nginx-data:
      mysql-data:
    

    启动:docker-compose up -d,停止:docker-compose down

总结

  1. 核心三要素:镜像(只读模板)、容器(镜像运行实例)、仓库(镜像存储),是理解 Docker 的基础。
  2. 必掌握操作:镜像的拉取 / 构建、容器的启停 / 进入 / 端口映射 / 数据挂载,通过 Nginx 实战能快速上手。
  3. 进阶方向:Dockerfile 编写(自定义镜像)、Docker Compose(多容器管理),是解决实际开发问题的关键。

初学者建议先反复练习 “镜像拉取→容器启动→进入容器操作→停止删除容器” 的流程,再逐步学习 Dockerfile 和 Compose,不用急于掌握所有细节,先跑通案例,再深入理解原理。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐