docker常用命令速记
1. 镜像管理 (Images)
| 功能 | 命令 | 示例 |
|---|---|---|
| 拉取镜像 | docker pull <image>:<tag> |
docker pull nginx:latest |
| 查看本地镜像 | docker images |
docker images |
| 删除镜像 | docker rmi <image_id> |
docker rmi fce28 |
| 构建镜像 | docker build -t <name>:<tag> . |
docker build -t myapp:v1 . |
| 镜像改名/打标 | docker tag <old> <new> |
docker tag myapp:v1 repo/myapp:v1 |
| 导出镜像 | docker save -o <file>.tar <img> |
docker save -o nginx.tar nginx |
| 导入镜像 | docker load -i <file>.tar |
docker load -i nginx.tar |
2. 容器生命周期 (Containers)
| 功能 | 命令 | 常用选项 |
|---|---|---|
| 创建并运行 | docker run <image> |
-d后台, -p端口映射, --name命名, |
| 启动容器 | docker start <id/name> |
docker start my_web |
| 停止容器 | docker stop <id/name> |
docker stop my_web |
| 重启容器 | docker restart <id/name> |
docker restart my_web |
| 删除容器 | docker rm <id/name> |
docker rm -f (强制删除运行中的) |
| 查看运行中容器 | docker ps |
docker ps |
| 查看所有容器 | docker ps -a |
包含已停止的容器 |
针对docker run的参数特别补充一下。
| 参数 | 说明 | 示例 |
|---|---|---|
-d |
后台运行容器(Detached mode),返回容器 ID | -d |
-it |
交互式终端。-i 保持输入流,-t 分配伪终端 |
-it |
--name |
为容器指定一个自定义名称 | --name my-web |
--rm |
容器停止后自动删除(常用于临时测试) | --rm |
--restart |
重启策略 (no, on-failure, always, unless-stopped) | --restart always |
-p |
发布端口 (宿主机端口:容器端口) | -p 8080:80 |
-P |
随机映射容器内暴露的所有端口到宿主机高位端口 | -P |
--network |
将容器连接到指定网络 | --network my-net |
--ip |
为容器指定固定 IP (需在自定义网络下) | --ip 172.18.0.10 |
--add-host |
在容器 /etc/hosts 中添加一条主机映射 |
--add-host db:192.168.1.5 |
--dns |
指定容器使用的 DNS 服务器 | --dns 8.8.8.8 |
-v |
挂载数据卷/目录 (宿主机路径:容器路径:读写权限) | -v /data:/app:ro (ro=只读) |
--mount |
更显式的挂载方式(推荐),支持 type=bind/volume | --mount type=bind,src=/a,dst=/b |
--volumes-from |
从另一个容器挂载所有卷 | --volumes-from storage-container |
-w |
指定容器内的工作目录 (Working directory) | -w /usr/src/app |
-e |
设置环境变量 | -e MYSQL_ROOT_PASSWORD=123 |
--env-file |
从指定文件读取环境变量 | --env-file .env.list |
-u |
指定运行容器的用户名或 UID | -u root 或 -u 1001 |
--entrypoint |
覆盖镜像默认的入口程序 | --entrypoint /bin/sh |
-m |
限制容器使用的最大内存 | -m 512m |
--cpus |
限制容器使用的 CPU 核心数 | --cpus="1.5" |
--memory-reservation |
设置内存软限制(预留内存) | --memory-reservation 256m |
--cpuset-cpus |
绑定容器到特定 CPU 核心运行 | --cpuset-cpus="0,3" |
3. 运维与交互 (Ops & Debug)
| 功能 | 命令 | 备注 |
|---|---|---|
| 进入容器内部 | docker exec -it <id> /bin/bash |
退出按 exit 或 Ctrl+P+Q |
| 查看容器日志 | docker logs -f <id> |
-f 实时追踪, --tail 100 最新100行 |
| 查看详细信息 | docker inspect <id> |
获取 IP、挂载路径等完整配置 |
| 查看资源占用 | docker stats |
实时查看 CPU/内存/网络占用 |
| 文件拷贝 | docker cp <src> <dest> |
docker cp index.html my_web:/var/www/ |
| 修改容器名 | docker rename <old> <new> |
docker rename old_name new_name |
4. 网络与数据卷 (Network & Volume)
| 类型 | 命令 | 说明 |
|---|---|---|
| 网络 | docker network ls |
查看所有网络 |
docker network create <name> |
创建自定义网络 | |
| 数据卷 | docker volume ls |
查看所有数据卷 |
docker volume create <name> |
创建持久化数据卷 | |
docker volume prune |
清理未使用的卷 |
5. 系统清理 (Cleanup)
| 功能 | 命令 | 说明 |
|---|---|---|
| 查看空间占用 | docker system df |
查看 Docker 各部分占用的磁盘 |
| 自动清理 | docker system prune |
删除已停止容器、未使用网络和悬挂镜像 |
| 彻底清理 | docker system prune -a |
删除所有未使用的镜像(慎用) |
6. 常用命令组合
- 启动一个带端口映射的 Nginx:
docker run -d -p 8080:80 --name mynginx nginx - 查看容器 IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id> - 清理所有退出状态的容器:
docker rm $(docker ps -a -q -f status=exited)