以下是 Docker 核心操作命令的汇总版(含详细注释),涵盖「容器基础操作、进入容器、目录 / 文件操作、日志查看、退出容器」全流程,适配日常开发 / 运维场景:
bash
###########################################################################
# 一、容器基础操作(前提:定位/管理目标容器)
###########################################################################
# 1. 列出所有运行中的容器(核心:获取容器ID/名称)
# 输出列说明:CONTAINER ID(容器ID)、IMAGE(镜像)、NAMES(容器名)、STATUS(状态)
docker ps
# 示例输出:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# f8b7b3f9e2d1 java:8 "java -jar app.jar" 2 hours ago Up 2 hours 8080/tcp my-app-container
# 2. 列出所有容器(包括已停止的)
docker ps -a
# 3. 启动已停止的容器(若容器未运行,需先启动才能进入)
# 格式:docker start 容器ID/容器名
docker start f8b7b3f9e2d1
# 或用容器名
docker start my-app-container
# 4. 停止运行中的容器
docker stop f8b7b3f9e2d1
###########################################################################
# 二、进入容器(交互式终端,支持自由操作)
###########################################################################
# 核心命令:docker exec -it 容器ID/容器名 终端类型(bash/sh)
# 说明:
# -i:保持标准输入打开(交互模式)
# -t:分配伪终端
# bash:优先用bash,极简镜像(如alpine)无bash则换sh
docker exec -it f8b7b3f9e2d1 bash
# 极简镜像适配(无bash)
# docker exec -it f8b7b3f9e2d1 sh
###########################################################################
# 三、容器内目录/文件操作(进入容器后执行)
###########################################################################
# ==================== 3.1 目录存在性验证 ====================
# 方式1:快速验证(ls + 目录路径,报错则不存在)
# 示例:检查/usr/local/app/logs目录是否存在
ls /usr/local/app/logs
# 存在输出:access.log error.log temp/
# 不存在输出:ls: cannot access '/usr/local/app/logs': No such file or directory
# 方式2:精准判断(脚本/批量操作首选)
# -d:判断是否为目录且存在;&&:条件成立执行;||:条件不成立执行
[ -d "/usr/local/app/logs" ] && echo "目录存在" || echo "目录不存在"
# 方式3:验证并进入目录(cd + pwd)
# 能进入则存在,同时输出目录绝对路径
cd /usr/local/app/logs && pwd
# 存在输出:/usr/local/app/logs
# 不存在输出:-bash: cd: /usr/local/app/logs: No such file or directory
# 方式4:全局搜索目录(不知道具体路径时)
# /:从根目录搜索;-name:指定目录名;-type d:限定只搜目录
find / -name "logs" -type d
# 存在输出:/usr/local/app/logs /var/logs
# ==================== 3.2 目录详情查看 ====================
# 查看目录详细信息(权限、所有者、修改时间)
ls -l /usr/local/app/logs
# 递归查看目录(包括所有子目录)
ls -R /usr/local/app/logs
# 查看目录大小(汇总大小,-h:人性化显示)
du -sh /usr/local/app/logs
# ==================== 3.3 其他常用文件操作 ====================
# 查看文件内容(如日志文件)
cat /usr/local/app/logs/error.log
# 实时跟踪文件内容(类似tail -f)
tail -f /usr/local/app/logs/access.log
# 查看文件前10行
head -10 /usr/local/app/logs/error.log
###########################################################################
# 四、退出容器(两种方式,按需选择)
###########################################################################
# 方式1:保留容器运行(推荐,日常操作)
# 快捷键:先按Ctrl+P → 松开后按Ctrl+Q(无需回车)
# 效果:回到宿主机,容器仍运行(docker ps可验证状态为Up)
# 方式2:停止容器退出(用完即停)
# 执行exit命令(或按Ctrl+D)
exit
# 效果:回到宿主机,容器状态变为Exited(docker ps -a可查)
###########################################################################
# 五、宿主机直接操作(无需进入容器)
###########################################################################
# 5.1 单次查看容器内目录(无需进入)
docker exec f8b7b3f9e2d1 ls -l /usr/local/app/logs
# 5.2 容器日志查看(核心!宿主机执行)
# 5.2.1 查看全部日志
docker logs f8b7b3f9e2d1
# 5.2.2 实时跟踪日志(-f:follow)
docker logs -f f8b7b3f9e2d1
# 5.2.3 带时间戳查看日志(-t:timestamp)
docker logs -tf f8b7b3f9e2d1
# 5.2.4 查看最后100行日志(--tail)
docker logs --tail 100 f8b7b3f9e2d1
# 5.2.5 查看指定时间范围日志(--since/--until)
docker logs --since "2025-12-16 14:00:00" --until "2025-12-16 15:00:00" f8b7b3f9e2d1
# 5.2.6 过滤错误日志(管道+grep)
docker logs -f f8b7b3f9e2d1 | grep "ERROR"
# 5.2.7 导出日志到文件
docker logs -t f8b7b3f9e2d1 > app-logs-20251216.log
###########################################################################
# 六、常见问题修复命令
###########################################################################
# 1. 容器内切换root(解决权限不足)
su root
# 2. 容器启动失败:查看启动日志
docker logs f8b7b3f9e2d1
# 3. 误停止容器:重新启动
docker start f8b7b3f9e2d1 && docker exec -it f8b7b3f9e2d1 bash
