本节我们将学习Docker容器命令,进入正在运行的容器并以命令行交互。
①进入正在运行的容器并以命令行交互
docker exec -it 容器ID bash(Shell)(exec执行)
这个命令的核心作用是进入正在运行的 Docker 容器内部,打开一个交互式的 bash 终端,让你能像操作普通 Linux 服务器一样在容器里执行各种命令。
命令拆解:
1. docker exec:Docker 的核心指令,意思是“在运行中的容器里执行指定命令”,这是和容器交互的重要方式。
2. -it:是两个参数的组合
- -i (interactive):保持标准输入打开,让你能输入命令和容器交互。
- -t (tty):为容器分配一个伪终端,让你能看到像普通 Linux 终端一样的提示符。
3. 容器ID:指定你要操作的那个 Docker 容器的唯一标识(也可以用容器名称替代)。
4. bash:告诉 Docker 在容器里执行 bash 程序,也就是打开 bash 终端。

图解注意点1:为什么要退出
(1)docker run -it ubuntu /bin/bash 创建+启动+进入” 一个全新的Ubuntu容器 (-it :分配交互式终端,让你能直接和新容器的bash交互;- /bin/bash :容器启动后立刻执行bash,打开终端。)
注意所涉及关键机制:用 docker run -it 启动的容器,是前台交互式运行状态(你的宿主机终端和容器的bash终端绑定了。)
(2) 执行 exit 退出(从新创建的容器bash退回到宿主机的终端)
1. 容器状态改变:因为容器是前台运行的,退出bash后,容器的主进程(bash)就结束了,容器会从 Up (运行中)变成 Exited (已停止)。
2. 终端控制权回归:宿主机终端重新获得输入权限,你才能继续执行后续的 docker exec 命令。
图解注意点2:执行这个命令从(“创建新容器”过渡到“操作旧容器”)
即使你再用 exit 退出,这个容器也不会停止——因为 exec 只是在容器里新开了一个bash进程,不影响容器的主进程。
②重新进入docker attach 容器ID
attach直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。(推荐)
③用之前的redis容器实例进入试试
docker exec-it容器lD /bin/bash /docker exec -it容器lD redis-cli
(一般用-d后台启动的程序,再用exec进入对应容器实例)

红框后面是进入 Redis 容器后,在 Redis 命令行客户端里执行的基础操作(测试 Redis 服务是否正常)
1. redis-cli -p 6379 :启动 Redis 命令行客户端, -p 6379 指定连接 Redis 的端口(6379 是 Redis 的默认端口)。
2. ping :测试 Redis 服务的连通性,返回 PONG 说明 Redis 服务运行正常。
3. set k1 v1 :向 Redis 中存入一个键值对, k1 是键(key), v1 是值(value),返回 OK 表示存储成功。
4. get k1 :从 Redis 中读取键 k1 对应的value,返回 "v1" 说明查询成功。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程