• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
sn-genuine
博客园    首页    新随笔    联系   管理    订阅  订阅

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命令
  • 退出两种方式对比:
    1. exit:直接关闭终端,容器同步停止
    2. 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容器必须持有前台持续运行进程才不会自动退出:

  1. 单纯执行 docker run -d centos 会立刻退出,因为无常驻前台程序;
  2. Nginx、Redis等官方镜像内置前台常驻进程,-d 启动可稳定后台运行;
  3. 自定义容器解决方案:用 tail -f /etc/hosts、top 等常驻命令挂起前台。

三、容器查看命令 docker ps

基础语法

docker ps [OPTIONS]

常用 OPTIONS 说明

  1. -a:列出所有容器(正在运行 + 历史已停止)
  2. -l:仅展示最近一次创建的容器
  3. -n 数字:展示最近n个创建的容器,例 docker ps -n 3
  4. -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

语法:容器 ↔ 宿主机双向拷贝

  1. 容器文件 → 宿主机
# 格式:docker cp 容器ID:容器内路径 宿主机本地路径
docker cp ddb1ae909a66:/tmp/a.txt /zzyyuse
  1. 宿主机文件 → 容器内
# 格式:docker cp 宿主机本地路径 容器ID:容器内路径
docker cp /zzyyuse/test.txt ddb1ae909a66:/tmp/

七、容器信息查看命令

  1. 查看容器完整底层详情(JSON格式)
docker inspect 容器ID

可查看网络配置、挂载目录、环境变量、端口映射、镜像元数据等完整信息。
2. 查看容器内部运行进程

docker top 容器ID
  1. 查看容器标准输出日志
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 对应还原镜像,无镜像分层,仅保存单文件系统快照。

九、实操场景完整流程汇总

  1. 拉取镜像 → docker pull xxx
  2. 创建启动容器(前台/后台)→ docker run -it / -d
  3. 查看容器列表 → docker ps -a
  4. 进入运行容器调试 → docker exec -it
  5. 宿主机/容器互传文件 → docker cp
  6. 查看日志/进程/底层信息 → docker logs / top / inspect
  7. 停止/重启/删除容器 → stop / restart / rm
  8. 容器打包迁移 → export + import
  9. 批量清理全部容器 → docker rm -f $(docker ps -a -q)

十、高频踩坑总结

  1. docker run -d centos 容器自动退出:缺少前台常驻进程;
  2. attach 退出导致容器停机:优先使用 exec;
  3. 端口访问不通:检查 -p 端口映射参数,确认宿主机防火墙放行;
  4. 批量操作容器ID:搭配 docker ps -q 简化脚本;
  5. 后台服务容器(Redis/Nginx)直接 -d 启动即可,官方镜像内置前台常驻进程。
posted on 2026-07-17 15:58  SobNov  阅读(1)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3