Docker常用命令

以下是 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
相关推荐
珠海西格电力2 小时前
零碳园区应急能源基础架构规划:备用电源与清洁能源联动配置
大数据·运维·人工智能·物联网·能源
云水木石2 小时前
Rust 语言开发的 Linux 桌面来了
linux·运维·开发语言·后端·rust
隔壁小红馆2 小时前
docker 部署pgsql
运维·docker·容器
CIb0la2 小时前
数字时代,传统碟片的销量不减反增
运维·生活
wanhengidc3 小时前
云手机 开发测试中的便捷工具
运维·服务器·科技·智能手机·云计算
HalvmånEver3 小时前
Linux:基础IO(终)
linux·运维·c++·学习·缓冲区·libc
大江东第一深情4 小时前
Origin 2024 进行语言切换后仍然显示为英文
运维·前端
CSDN官方博客4 小时前
CSDN社区镜像创作活动
大数据·运维·人工智能
石小千4 小时前
Ubuntu24.04 安装Docker
运维·docker·容器