IndieBits - 独立开发碎碎念

探索海外独立开发 | 学习 · 思考 · 实践

Docker 新手快速上手备忘单 (Cheat Sheet)

核心理念

Docker 可以想象成 “软件的标准化集装箱”

它将一个应用及其所有依赖(代码、库、环境配置等)打包到一个独立的、可移植的“容器”中。

这个容器可以在任何安装了 Docker 的机器上以完全相同的方式运行,彻底解决了“在我电脑上明明是好的”这个经典难题。


一、核心概念解析

  • 镜像 (Image):一个只读的模板,可以把它看作是软件的“安装包”或者“类”。它包含了运行应用所需的一切。例如,ubuntu:22.04 是一个镜像,nginx 也是一个镜像。
  • 容器 (Container):镜像的运行实例,可以把它看作是软件“运行起来的程序”或者“对象”。你可以创建、启动、停止、删除容器。每个容器都是独立的、隔离的。
  • 仓库 (Registry):存放镜像的“应用商店”。最著名的就是 Docker Hub。你可以从这里 pull(拉取)官方镜像,也可以把自己构建的镜像 push(推送)上去。
  • Dockerfile:一个文本文件,里面包含了构建一个新镜像的所有指令。它就像一份制作镜像的“菜谱”。

二、安装 Docker

在 Ubuntu 上安装

推荐使用官方脚本来安装最新版本。

  1. 更新包列表
    1
    sudo apt-get update
  2. 安装必要的依赖
    1
    sudo apt-get install ca-certificates curl gnupg
  3. 添加 Docker 官方 GPG 密钥
    1
    2
    3
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
  4. 设置 Docker 仓库
    1
    2
    3
    4
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. 安装 Docker Engine
    1
    2
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  6. (重要) 配置用户组,避免每次都用 sudo
    1
    2
    sudo groupadd docker
    sudo usermod -aG docker $USER
    配置后,你需要退出当前终端会话并重新登录才能生效。

在 macOS 上安装

在 Mac 上最简单的方式是安装 Docker Desktop。

  1. 前往 Docker 官网下载 Docker Desktop for Mac
  2. 下载 .dmg 文件后,双击打开,并将其拖拽到 Applications 文件夹。
  3. 从应用程序中启动 Docker Desktop。它会在菜单栏显示一个小鲸鱼图标,表示正在运行。

验证安装:无论在哪个系统,打开终端输入以下命令,看到版本信息即表示成功。

1
docker --version

三、核心命令备忘单

3.1 镜像管理 (Image Management)

拉取(下载)镜像

1
docker pull <镜像名>:<标签>

功能: 从 Docker Hub 或其他仓库下载一个镜像到本地。标签(tag)通常是版本号,latest 是默认值。
示例: docker pull nginx:latest

查看本地所有镜像

1
docker images

功能: 列出你电脑上已经下载的所有镜像。
示例: docker images

删除本地镜像

1
docker rmi <镜像ID或镜像名>

功能: 删除一个或多个本地镜像以释放磁盘空间。如果该镜像有正在运行的容器,需要先停止并删除容器。
示例: docker rmi nginx

从 Dockerfile 构建镜像

1
docker build -t <新镜像名>:<标签> <Dockerfile所在目录>

功能: 根据 Dockerfile 的指令创建一个新的自定义镜像。-t 用来给镜像命名。
示例: docker build -t my-app:1.0 . (注意最后的 . 表示当前目录)

容器管理 (Container Management)

创建并运行容器

1
docker run [选项] <镜像名>

功能: 这是最核心的命令,用于从镜像创建并启动一个容器。它有很多常用选项:

  • -d: 后台运行 (detach)
  • -p <主机端口>:<容器端口>: 端口映射 (port mapping)
  • -v <主机路径>:<容器路径>: 卷挂载 (volume),用于数据持久化
  • --name <容器名>: 给容器起一个好记的名字
  • -it: 交互模式,进入容器的终端 (interactive & TTY)

示例: docker run -d -p 8080:80 --name my-nginx nginx

查看正在运行的容器

1
docker ps

功能: 列出当前正在运行的容器。
示例: docker ps

查看所有容器(包括已停止的)

1
docker ps -a

功能: 列出所有曾经创建过的容器。
示例: docker ps -a

停止一个容器

1
docker stop <容器ID或容器名>

功能: 优雅地停止一个正在运行的容器。
示例: docker stop my-nginx

启动一个已停止的容器

1
docker start <容器ID或容器名>

功能: 重新启动一个之前被停止的容器。
示例: docker start my-nginx

删除一个容器

1
docker rm <容器ID或容器名>

功能: 删除一个已经停止的容器。如果要删除正在运行的,需要加 -f (force) 参数。
示例: docker rm my-nginx

查看容器日志

1
docker logs <容器ID或容器名>

功能: 实时查看容器内部的标准输出信息,非常适合排错。可以加 -f 持续跟踪。
示例: docker logs -f my-nginx

进入正在运行的容器

1
docker exec -it <容器ID或容器名> /bin/bash

功能: 在一个正在后台运行的容器中打开一个新的终端会话,让你可以在容器内部执行命令。
示例: docker exec -it my-nginx /bin/bash

系统清理 (System Cleanup)

清除构建缓存 (Clean Build Cache)

1
docker builder prune

功能: 删除所有在构建镜像过程中产生的缓存。如果你经常构建镜像,这可以释放大量磁盘空间。
示例: docker builder prune

一键清理所有无用资源

1
docker system prune -a

功能: 清理所有未被使用的 Docker 资源,包括停止的容器、无用的网络、悬空(dangling)的镜像和所有构建缓存。这是释放磁盘空间的神器!
示例: docker system prune -a


希望这份完整的备忘单对你有帮助!

0%