| 构建 |
|---|
| 根据 Dockerfile 构建镜像。 | docker build -t app:1.0 . |
| 从头重新构建镜像,忽略缓存的层。 | docker build --no-cache -t app:1.0 . |
| 在多阶段 Dockerfile 中只构建到指定阶段为止。 | docker build --target deps -t app:deps . |
| 通过驱动 BuildKit 的 buildx 插件构建镜像。 | docker buildx build -t app:1.0 . |
| 为多种 CPU 架构构建同一个镜像。 | docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 --push . |
| 镜像 |
|---|
| 从 registry 下载镜像。 | docker pull node:20 |
| 列出本地存储的镜像。 | docker images |
| 创建一个指向同一镜像的新标签。 | docker tag app:1.0 app:latest |
| 删除一个或多个本地镜像。 | docker rmi app:1.0 |
| 容器生命周期 |
|---|
| 从镜像创建并启动容器。 | docker run -p 8080:3000 app |
| 创建容器但不启动它。 | docker create --name web app |
| 启动已停止的容器。 | docker start web |
| 优雅地停止运行中的容器。 | docker stop web |
| 一步完成容器的停止与启动。 | docker restart web |
| 强制立即停止容器,不等待优雅关闭。 | docker kill web |
| 冻结容器内的所有进程。 | docker pause web |
| 解冻已暂停容器的进程。 | docker unpause web |
| 阻塞直到容器停止,然后打印其退出码。 | docker wait web |
| 列出运行中的容器;加 -a 可包含已停止的。 | docker ps -a |
| 为现有容器改一个新名字。 | docker rename web web-old |
| 更改容器的资源限制或重启策略。 | docker update --restart=unless-stopped web |
| 删除已停止的容器。 | docker rm web |
| 运行标志 |
|---|
| 在后台运行容器并打印其 ID。 | docker run -d -p 8080:80 app |
| 把容器端口发布到宿主机端口上。 | docker run -p 8080:80 app |
| 把宿主机目录或命名卷挂载进容器。 | docker run -v app-data:/data app |
| 在容器中设置环境变量。 | docker run -e MODE=prod app |
| 给容器一个固定名称,供后续命令使用。 | docker run --name web app |
| 容器退出时将其删除。 | docker run --rm app |
| 在指定网络上启动容器。 | docker run --network net app |
| 告诉 Docker 何时重启容器。 | docker run --restart unless-stopped app |
| 分配终端并保持 stdin 打开,用于交互式会话。 | docker run -it alpine sh |
| 用你自己的命令替换镜像的 entrypoint。 | docker run --entrypoint sh app |
| 限制容器可用的内存或 CPU 份额。 | docker run --memory 512m --cpus 0.5 app |
| 查看与检查 |
|---|
| 读取容器的 stdout 和 stderr;-f 持续跟随新输出。 | docker logs -f web |
| 显示容器或镜像的底层配置与状态。 | docker inspect web |
| 用 Go 模板从 inspect 中提取单个字段。 | docker inspect --format '{{.State.Status}}' web |
| 列出容器发布的宿主机端口。 | docker port web |
| 显示容器相对其镜像改动过的文件。 | docker diff web |
| 运行中容器的实时 CPU、内存和网络数据。 | docker stats |
| 列出容器内正在运行的进程。 | docker top web |
| 实时流式接收守护进程的 Docker 事件。 | docker events --filter type=container |
| 显示镜像、容器、卷和缓存占用的磁盘空间。 | docker system df |
| 显示全系统的 Docker 设置与状态。 | docker info |
| Exec 与 attach |
|---|
| 在运行中的容器内执行命令。 | docker exec -it web sh |
| 把你的终端接到容器的主进程上。 | docker attach web |
| 文件与 registry |
|---|
| 在容器与本地文件系统之间复制文件。 | docker cp web:/app/logs ./logs |
| 从 CLI 登录 registry。 | docker login |
| 退出 registry 登录。 | docker logout |
| 把本地镜像上传到 registry。 | docker push user/app:1.0 |
| 把镜像写入 tar 文件。 | docker save -o app.tar app:1.0 |
| 从 tar 文件读入镜像。 | docker load -i app.tar |
| 把容器的文件系统写入 tar 文件。 | docker export web > web.tar |
| 从 tar 文件系统创建镜像。 | docker import web.tar web:snap |
| 把容器当前状态固化为新镜像。 | docker commit web app:snap |
| 卷 |
|---|
| 为持久数据创建命名卷。 | docker volume create data |
| 列出卷。 | docker volume ls |
| 删除卷。 | docker volume rm data |
| 网络 |
|---|
| 列出网络。 | docker network ls |
| 创建网络让容器彼此通信。 | docker network create net |
| 把运行中的容器接入某个网络。 | docker network connect net web |
| Compose |
|---|
| 构建、(重新)创建并启动 compose.yaml 中的服务;-d 让它们在后台运行。 | docker compose up -d |
| 先重新构建服务镜像再启动服务。 | docker compose up --build -d |
| 在运行中的服务容器内执行命令。 | docker compose exec api sh |
| 跟踪一个或多个服务的日志。 | docker compose logs -f api |
| 列出 Compose 管理的服务容器。 | docker compose ps |
| 停止服务容器但不删除它们。 | docker compose stop |
| 重启服务容器。 | docker compose restart api |
| 停止并删除容器和网络;-v 还会删除命名卷。 | docker compose down |
| 显示经过合并和环境变量替换后的最终 Compose 配置。 | docker compose config |
| 清理 |
|---|
| 删除已停止的容器、悬空镜像和未使用的网络;-a --volumes 还会删除未使用的镜像和卷。 | docker system prune -af |
| 删除所有已停止的容器。 | docker container prune |
| 删除未使用或悬空的镜像。 | docker image prune -a |
| 删除没有任何容器使用的卷。 | docker volume prune |
| 删除没有任何容器使用的网络。 | docker network prune |
| 删除缓存的构建层。 | docker builder prune |