点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。
在 Docker 中,使用 docker container exec 命令在正在运行的 Docker 容器中执行新的命令。
语法说明:
用法:docker container exec [OPTIONS] CONTAINER COMMAND [ARG...] 在运行中的容器中执行命令 别名: docker container exec、docker exec 选项: -d、--detach 分离模式:在后台运行命令 -detach-keys string 覆盖用于分离容器的按键序列 -e, --env list 设置环境变量 --env-file list 读入环境变量文件 -i, --interactive 即使未连接,也要保持 STDIN 打开状态 --privileged 赋予命令扩展权限 -t, --tty 分配一个伪 TTY -u,--user 字符串 用户名或 UID(格式:“<name|uid>[:<group|gid>]”)。 -w, --workdir string 容器内的工作目录
(1)在容器中执行单个命令,格式:
docker container exec -it <container_id_or_name> <command>
例如:
# 容器列表 root@hxvm2:~# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7bfac83b61a3 redis "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis 41a203fa62c5 nginx:latest "/docker-entrypoint.…" 18 hours ago Up 18 hours 0.0.0.0:8080->80/tcp, :::8080->80/tcp eager_taussig # 进入 redis 容器的 bash root@hxvm2:~# docker container exec -it redis bash root@7bfac83b61a3:/data# ls
上面将在名为 redis 的容器中启动一个交互式的 Bash shell。其中,-it参数用于确保命令以交互模式(-i)和伪终端(-t)的方式执行,这样你可以在容器中与命令进行交互。
(2)在容器中执行多个命令,可以将多个命令用分号(;)分隔,在一个docker container exec命令中执行。例如:
root@hxvm2:~# docker container exec -it redis bash -c "date; pwd" Fri Aug 23 03:56:41 UTC 2024 /data
上面将在容器中依次执行 date(打印当前日期)和pwd(显示当前工作目录)命令。
当容器中的应用出现问题时,可以使用docker container exec进入容器内部,查看日志文件、检查配置或运行诊断命令,以帮助确定问题的根源。
例如,进入容器后查看应用程序的日志文件:docker container exec -it my_container tail -f /app/logs/app.log。
可以在容器中执行服务管理命令,如启动、停止或重启容器内的服务。
例如,如果容器中运行着一个数据库服务,可以使用docker container exec进入容器并执行数据库管理命令,如备份数据库或执行查询。
在容器中执行文件操作命令,如复制、移动或编辑文件。例如,将一个文件从主机复制到容器中:docker container exec -it my_container bash -c "cp /host/file.txt /container/directory/"。
(1)容器必须正在运行
docker container exec只能在正在运行的容器中执行命令。如果尝试在已停止的容器中执行命令,将会收到错误提示。
(2)权限问题
在容器中执行的命令可能受到容器内部的用户权限限制。如果需要以特定用户身份执行命令,可以在docker run命令创建容器时指定用户,或者在容器内部使用sudo等命令提升权限(如果容器中安装了sudo)。
docker container exec 命令是一个非常有用的工具,用于在正在运行的 Docker 容器中执行各种操作,方便进行调试、管理和维护容器内的应用程序和服务。
点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。