Docker 教程

Docker 在容器中执行命令

在 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 容器中执行各种操作,方便进行调试、管理和维护容器内的应用程序和服务。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号