Docker 容器核心命令
Docker 容器核心命令完整笔记
一、前置基础:镜像下载前提
有镜像才能创建容器,先拉取基础镜像
# 拉取CentOS镜像
docker pull centos
# 拉取Ubuntu镜像
docker pull ubuntu
# 拉取Redis镜像做后台守护进程演示
docker pull redis:6.0.8
二、核心总命令:docker run 创建+启动容器
语法格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用 OPTIONS 参数详解
| 参数 | 作用说明 |
|---|---|
-i |
开启交互式操作,必须搭配 -t 使用 |
-t |
分配伪终端,提供Shell交互窗口,必须搭配 -i 使用 |
-d |
后台守护式运行容器,返回容器ID(服务生产模式) |
--name="容器名" |
自定义容器名称,方便后续管理 |
-P |
大写P:随机自动映射宿主机端口 |
-p 宿主机端口:容器端口 |
小写p:手动指定端口映射,例 -p 8080:80 |
-p IP:宿主机端口:容器端口 |
绑定指定宿主机IP做端口映射,例 -p 10.0.0.100:8080:80 |
1. 前台交互式启动(示例)
# 使用centos镜像启动交互式容器,进入bash终端
docker run -it centos /bin/bash
- 参数解析:
-it组合开启终端交互;/bin/bash指定容器内执行Shell命令 - 退出两种方式对比:
exit:直接关闭终端,容器同步停止Ctrl + P + Q:后台脱离终端,容器保持运行
2. 后台守护式启动(生产常用)
# 后台启动centos容器
docker run -d centos
# 后台启动redis服务容器
docker run -d redis:6.0.8
# 前台交互式redis演示
docker run -it redis:6.0.8
关键机制:容器后台运行规则
Docker容器必须持有前台持续运行进程才不会自动退出:
- 单纯执行
docker run -d centos会立刻退出,因为无常驻前台程序; - Nginx、Redis等官方镜像内置前台常驻进程,
-d启动可稳定后台运行; - 自定义容器解决方案:用
tail -f /etc/hosts、top等常驻命令挂起前台。
三、容器查看命令 docker ps
基础语法
docker ps [OPTIONS]
常用 OPTIONS 说明
-a:列出所有容器(正在运行 + 历史已停止)-l:仅展示最近一次创建的容器-n 数字:展示最近n个创建的容器,例docker ps -n 3-q:静默模式,只输出容器ID,常用于批量操作
批量删除容器经典组合命令
# 方式1:shell变量传递
docker rm -f $(docker ps -a -q)
# 方式2:管道xargs传递
docker ps -a -q | xargs docker rm
四、容器生命周期管理(启动/停止/重启/删除)
1. 启动已停止容器
docker start 容器ID/容器名称
2. 重启运行中容器
docker restart 容器ID/容器名称
3. 正常停止容器(优雅关闭,发送信号等待进程收尾)
docker stop 容器ID/容器名称
4. 强制杀死容器(立即终止,丢失临时数据)
docker kill 容器ID/容器名称
5. 删除已停止容器
# 删除单个容器
docker rm 容器ID
# 强制删除运行中容器
docker rm -f 容器ID
# 一次性清空全部容器(上面批量组合)
docker rm -f $(docker ps -a -q)
五、进入正在运行的容器(两种方式核心区别)
方式1:docker attach(不推荐生产使用)
docker attach 容器ID
- 原理:直接挂载容器初始启动进程的终端,不创建新进程
- 致命缺陷:执行
exit退出时,容器会同步停止
方式2:docker exec(官方推荐,日常首选)
# 交互式进入容器bash终端
docker exec -it 容器ID bash
- 原理:在容器内新建独立终端进程,不依赖初始启动进程
- 优势:执行
exit退出终端,容器持续后台运行,不会停止 - 适用场景:线上服务容器日常运维、调试
六、容器文件传输 docker cp
语法:容器 ↔ 宿主机双向拷贝
- 容器文件 → 宿主机
# 格式:docker cp 容器ID:容器内路径 宿主机本地路径
docker cp ddb1ae909a66:/tmp/a.txt /zzyyuse
- 宿主机文件 → 容器内
# 格式:docker cp 宿主机本地路径 容器ID:容器内路径
docker cp /zzyyuse/test.txt ddb1ae909a66:/tmp/
七、容器信息查看命令
- 查看容器完整底层详情(JSON格式)
docker inspect 容器ID
可查看网络配置、挂载目录、环境变量、端口映射、镜像元数据等完整信息。
2. 查看容器内部运行进程
docker top 容器ID
- 查看容器标准输出日志
docker logs 容器ID
# 实时滚动查看日志
docker logs -f 容器ID
八、容器导入导出(容器打包迁移)
1. export 导出容器为tar归档包
# 语法:docker export 容器ID > 导出文件名.tar
docker export ddb1ae909a66 > ubuntu_backup.tar
作用:将当前容器运行时文件系统打包,用于跨机器迁移。
2. import 从tar包导入生成新镜像
# 语法:cat 归档包.tar | docker import - 镜像名:版本号
cat ubuntu_backup.tar | docker import - myubuntu:v1.0
配套逻辑:export 对应容器打包,import 对应还原镜像,无镜像分层,仅保存单文件系统快照。
九、实操场景完整流程汇总
- 拉取镜像 →
docker pull xxx - 创建启动容器(前台/后台)→
docker run -it / -d - 查看容器列表 →
docker ps -a - 进入运行容器调试 →
docker exec -it - 宿主机/容器互传文件 →
docker cp - 查看日志/进程/底层信息 →
docker logs / top / inspect - 停止/重启/删除容器 →
stop / restart / rm - 容器打包迁移 →
export + import - 批量清理全部容器 →
docker rm -f $(docker ps -a -q)
十、高频踩坑总结
docker run -d centos容器自动退出:缺少前台常驻进程;attach退出导致容器停机:优先使用exec;- 端口访问不通:检查
-p端口映射参数,确认宿主机防火墙放行; - 批量操作容器ID:搭配
docker ps -q简化脚本; - 后台服务容器(Redis/Nginx)直接
-d启动即可,官方镜像内置前台常驻进程。
浙公网安备 33010602011771号