一、常见命令 (容器生命周期管理)
这类命令主要用于容器的创建、启动、停止、查看和删除,是日常使用频率最高的部分。
| 命令 | 说明 | 常用示例/参数 |
|---|---|---|
docker run |
创建并启动一个新容器 | docker run -d -p 80:80 --name my-nginx nginx - -d: 后台运行 - -p: 端口映射 - --name: 指定名称 |
docker ps |
查看正在运行的容器 | docker ps -a (查看所有,包括已停止的) docker ps -q (仅显示ID) |
docker start |
启动一个已停止的容器 | docker start <container_id/name> |
docker stop |
停止一个运行中的容器 | docker stop <container_id/name> (优雅停止) |
docker restart |
重启容器 | docker restart <container_id/name> |
docker kill |
强制停止容器 | docker kill <container_id/name> (发送 SIGKILL) |
docker rm |
删除容器 | docker rm <container_id/name> docker rm -f <id> (强制删除运行中的) |
docker exec |
在运行中的容器内执行命令 | docker exec -it <id> /bin/bash (进入交互模式) docker exec <id> ls |
docker logs |
查看容器日志 | docker logs -f <id> (实时跟踪) docker logs --tail 100 <id> (看最后100行) |
docker inspect |
查看容器/镜像的详细元数据 | docker inspect <id> (返回 JSON 格式信息) |
docker top |
查看容器内运行的进程 | docker top <id> |
docker stats |
实时查看容器资源使用率 (CPU/内存) | docker stats |
二、数据集 (数据卷与持久化)
Docker 容器默认是 ephemeral (易失) 的,数据需要挂载到宿主机或使用卷来持久化。注:Docker 中通常称为"数据卷 (Volumes)"或"绑定挂载 (Bind Mounts)",而非严格意义上的"数据集"。
| 命令 | 说明 | 常用示例/参数 |
|---|---|---|
docker volume create |
创建一个命名卷 | docker volume create my-data |
docker volume ls |
列出所有卷 | docker volume ls |
docker volume inspect |
查看卷的详细信息 (如挂载点) | docker volume inspect my-data |
docker volume rm |
删除一个或多个卷 | docker volume rm my-data |
docker volume prune |
清理所有未使用的悬空卷 | docker volume prune (慎用) |
| 挂载用法 | 在 run 时挂载数据 |
命名卷 : -v my-data:/app/data 绑定挂载 : -v /host/path:/container/path 或 --mount type=bind,src=/host,dst=/container |
docker cp |
在容器和宿主机间复制文件 | docker cp ./file.txt <id>:/app/file.txt docker cp <id>:/app/log.log ./log.log |
三、自定义镜像 (镜像构建与管理)
用于获取基础镜像、构建自己的应用镜像以及清理空间。
| 命令 | 说明 | 常用示例/参数 |
|---|---|---|
docker images |
列出本地镜像 | docker images -a (包含中间层镜像) |
docker pull |
下载镜像 | docker pull ubuntu:22.04 |
docker push |
上传镜像到仓库 | docker push myuser/myapp:latest |
docker build |
构建镜像 (基于 Dockerfile) | docker build -t my-app:v1 . - -t: 指定标签 - .: 当前目录为上下文 |
docker rmi |
删除镜像 | docker rmi <image_id/name> docker rmi -f <id> (强制删除) |
docker tag |
标记镜像 (重命名) | docker tag source:tag target:tag |
docker commit |
从容器提交为新镜像 | docker commit <container_id> my-new-image (不推荐用于生产,建议用 Dockerfile) |
docker history |
查看镜像的构建历史 | docker history <image_id> |
docker save/load |
导出/导入镜像 tar 包 | docker save -o app.tar my-app docker load -i app.tar |
docker system prune |
系统级清理 (镜像、容器、网络等) | docker system prune -a (清理所有未使用镜像,慎用) |
四、网络 (容器通信)
管理容器之间的网络连接、端口映射和网络隔离。
| 命令 | 说明 | 常用示例/参数 |
|---|---|---|
docker network ls |
列出网络 | docker network ls |
docker network create |
创建自定义网络 | docker network create -d bridge my-net (推荐使用自定义桥接网络以实现 DNS 解析) |
docker network inspect |
查看网络详情 (含连接容器) | docker network inspect my-net |
docker network connect |
将容器连接到网络 | docker network connect my-net <container_id> |
docker network disconnect |
将容器从网络断开 | docker network disconnect my-net <container_id> |
docker network rm |
删除网络 | docker network rm my-net (需先断开所有容器) |
| 端口映射 | 在 run 时暴露端口 |
-p 8080:80 (宿主机8080 -> 容器80) -P (随机映射所有暴露端口) |
| 链接(旧版) | 容器间链接 (已废弃,建议用网络) | --link (不再推荐,使用自定义网络代替) |