Appearance
Docker运行容器镜像指令
这篇文档是 Docker 高频命令速查表,重点放在“日常会反复敲的命令”,不讲底层原理,也不展开 Compose 和 K8s。
1. 镜像相关命令
1.1 搜索镜像
bash
docker search nginx适合:
- 先确认官方镜像是否存在
- 查看镜像命名是否正确
1.2 拉取镜像
bash
docker pull nginx:latest
docker pull mysql:8.0
docker pull mcr.microsoft.com/dotnet/aspnet:8.0经验建议:
- 生产环境尽量不要长期依赖
latest - 优先写明确版本号,方便回滚和排障
1.3 查看本地镜像
bash
docker images1.4 删除镜像
bash
docker rmi nginx:latest
docker rmi IMAGE_ID如果镜像正被容器占用,需要先删容器。
1.5 导出镜像
bash
docker save -o nginx.tar nginx:latest1.6 导入镜像
bash
docker load -i nginx.tar适合:
- 无公网环境迁移
- 生产环境离线导入
- 做镜像备份
2. 容器相关命令
2.1 启动容器
前台交互式
bash
docker run --rm -it ubuntu:22.04 bash适合临时测试。
后台服务式
bash
docker run -d --name my-nginx -p 8080:80 nginx:latest常用参数说明:
-d:后台运行--name:指定容器名-p 8080:80:宿主机 8080 映射容器 80
2.2 查看正在运行的容器
bash
docker ps2.3 查看所有容器
bash
docker ps -a2.4 查看容器日志
bash
docker logs my-nginx
docker logs -f my-nginx
docker logs --tail 100 my-nginx2.5 进入容器
bash
docker exec -it my-nginx sh
docker exec -it my-app bash经验上:
- Alpine 镜像大多用
sh - Ubuntu / Debian 镜像通常可用
bash
2.6 停止容器
bash
docker stop my-nginx2.7 启动已存在容器
bash
docker start my-nginx2.8 重启容器
bash
docker restart my-nginx2.9 删除容器
bash
docker rm my-nginx
docker rm -f my-nginx3. 常用运行参数速查
| 参数 | 作用 | 典型示例 |
|---|---|---|
-d | 后台运行 | docker run -d nginx |
-it | 交互式终端 | docker run -it ubuntu bash |
--rm | 退出即删 | docker run --rm -it ubuntu bash |
--name | 指定容器名 | docker run --name my-nginx nginx |
-p | 端口映射 | -p 8080:80 |
-v | 目录挂载 | -v ./data:/var/lib/mysql |
-e | 环境变量 | -e MYSQL_ROOT_PASSWORD=123456 |
--restart | 重启策略 | --restart unless-stopped |
4. 最常见的组合命令
4.1 跑一个 Nginx
bash
docker run -d --name my-nginx -p 8080:80 nginx:latest4.2 跑一个 MySQL
bash
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v ./mysql-data:/var/lib/mysql \
mysql:8.04.3 跑一个带挂载目录的应用
bash
docker run -d \
--name my-app \
-p 5000:5000 \
-v ./logs:/app/logs \
my-app:1.0.05. 容器排障时最常用的命令
5.1 容器起不来
先看状态:
bash
docker ps -a再看日志:
bash
docker logs CONTAINER_NAME5.2 端口访问不到
先确认容器是否在跑:
bash
docker ps再确认端口映射:
bash
docker port CONTAINER_NAME5.3 容器内到底有没有这个文件
bash
docker exec -it CONTAINER_NAME sh进去以后再用:
bash
ls -lh
pwd
cat xxx.conf5.4 看资源占用
bash
docker stats适合快速看:
- 哪个容器吃 CPU
- 哪个容器占内存高
6. 不建议继续保留的旧习惯
6.1 滥用 --privileged
除非明确知道自己在做什么,否则不要把容器都开成特权模式。
bash
docker run --privileged ...这会大幅放大容器权限,很多时候只是“为了省事”,但并不必要。
6.2 无脑使用 latest
开发测试阶段可以临时用,生产和长期维护场景尽量写死版本。
6.3 把所有东西都塞进一个容器
应用、数据库、Nginx、定时任务全塞一个容器,后面会非常难维护。
经验上:
- 单一职责优先
- 多服务用 Compose 组织
7. 高频命令小抄
bash
# 镜像
docker pull nginx:latest
docker images
docker rmi nginx:latest
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
# 容器
docker run -d --name my-nginx -p 8080:80 nginx:latest
docker ps
docker ps -a
docker logs -f my-nginx
docker exec -it my-nginx sh
docker stop my-nginx
docker start my-nginx
docker restart my-nginx
docker rm -f my-nginx
# 资源与排障
docker stats
docker port my-nginx8. 一句话总结
Docker 命令很多,但日常真正高频反复用的其实就围绕四件事:拉镜像、起容器、看状态、做清理。先把这套命令熟到不用查,后面再上 Compose 和部署实战会轻松很多。
