2. docker exec 命令

docker exec 命令用于在正在运行的 Docker 容器中执行命令(容器内的命令)。

命令格式

docker exec [选项] 容器名或容器ID 命令 [命令选线和参数...]

命令别名: docker container exec

常用选项

选项
说明
-d
在后台运行命令。
-e <环境变量名=环境变量值>
设置环境变量。
-i
保持 STDIN 打开,即使没有附加。
-t
分配一个伪终端。
-u <容器用户名>
指定执行命令的用户名或UID。
-w <容器内路径>
指定命令的工作路径。

示例

进入到正在运行的容器 mysql_server 中并执行内部 的 bash 来查看 MySQL 的配置文件 /etc/my.cnf

weimingze@mzstudio:~$ sudo docker exec -it mysql_server /bin/bash
bash-5.1# ls
afs  bin  boot  dev  docker-entrypoint-initdb.d  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
bash-5.1# cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/9.3/en/server-configuration-defaults.html

[mysqld]
... # 以下略
bash-5.1#

/bin/bash 是容器内的 Shell,我们还可以直接运行程序内的其他命令。

bash-5.1# 是容器内 bash 的提示符,这个提示符可以通过修改 PS1 环境变量来重新设置。如:

weimingze@mzstudio:~$ sudo docker exec -it mysql_server /bin/bash
bash-5.1# PS1="\u@\h# "
root@b0f4852e19af# PS1="\s-\v # "
bash-5.1 # exit
exit
weimingze@mzstudio:~$

PS1 中的含义