Docker exec命令概述

docker exec 命令可以用来在运行的 Docker容器 中执行命令。
docker exec命令是需要容器处于运行中且 PID 1 进程也处于运行中才能执行的操作。该命令后面的参数 container 可以是容器 Id 或者是容器名。

Docker exec命令语法

  1. haicoder(www.haicoder.net)# docker exec [options] container command [arg...]

Docker exec命令参数列表

参数 描述
–detach, -d 后台运行模式,在后台执行命令相关命令。
–detach-keys 覆盖容器后台运行的一些参数信息。
–env, -e 设置环境变量。
–interactive, -i 展示容器输入信息 STDIN。
–privileged 为命令提供一些扩展权限。
–tty, -t 命令行交互模式。
–user, -u 设置用户名。

案例

查看文件

使用 docker run 命令,在后台运行一个容器。

  1. haicoder(www.haicoder.net)# docker run -it -d --name haicoder ubuntu /bin/bash
  2. #返回报文
  3. 5ee4fdbe4021bdb1983037f405ff6b0535399f8611c5542e52ae7ef9e12eb0c1

使用 docker ps 命令,查看当前正在运行的容器,显示如下图,所示:
Docker exec命令 - 图1
使用 docker exec 命令,在运行的容器中执行命令 pwd,即查看当前目录。

  1. haicoder(www.haicoder.net)# docker exec haicoder pwd
  2. #返回结果
  3. /

使用 docker exec 命令,在运行的容器中执行命令 ls,即查看目录文件。

  1. haicoder(www.haicoder.net)# docker exec haicoder ls /tmp
  2. #输出
  3. ks-script-eC059Y
  4. yum.log

使用 docker killdocker rm 命令停止,并删除所有容器。

  1. haicoder(www.haicoder.net)# docker kill haicoder
  2. #输出
  3. haicoder
  4. haicoder(www.haicoder.net)# docker rm `docker ps -aq`
  5. #输出
  6. 5ee4fdbe4021

创建文件

使用 docker run 命令,在后台运行一个容器。

  1. haicoder(www.haicoder.net)# docker kill haicoder
  2. #输出
  3. haicoder
  4. haicoder(www.haicoder.net)# docker rm `docker ps -aq`
  5. #输出
  6. 5ee4fdbe4021

使用 docker ps命令,查看当前正在运行的容器,显示如下图,所示:
Docker exec命令 - 图2使用 docker exec命令,查看容器的 /etc 目录的文件是否有 haicoder。

  1. haicoder(www.haicoder.net)# docker exec haicoder ls /etc | grep haicoder


此时终端没有任何输出,即 docker 容器的 /etc 目录,没有 haicoder 文件。
使用 docker exec 命令,在 docker 容器内部的 /etc 目录,创建一个 haicoder 文件。

  1. haicoder(www.haicoder.net)# docker exec haicoder ls /etc | grep haicoder

再次使用 docker exec命令,查看容器的 /etc 目录的文件是否有 haicoder。

  1. haicoder(www.haicoder.net)# docker exec haicoder ls /etc | grep haicoder
  2. #输出
  3. haicoder


此时终端输出了 haicoder,即使用 docker exec 在 docker 容器内部创建文件成功。

进入容器

使用 docker run -it -d 命令,启动一个 dokcer容器。

  1. haicoder(www.haicoder.net)# docker run --name haicoder -it -d ubuntu
  2. ecb444c660ac2828a75cfdc6279dfc3b6311537d5cd2944ac757b5c155d0b9a6

使用 docker ps命令,查看当前正在运行的容器,显示如下图所示:
Docker exec命令 - 图3使用 docker exec -it containerName /bin/bash 命令,进入正在运行的 docker 容器,此时终端显示如下图所示:

  1. haicoder(www.haicoder.net)# docker exec -it haicoder /bin/bash

Docker exec命令 - 图4
此时,终端提示符变成了容器Id,即我们进入了 docker容器内部。使用 exit 命令或者 Ctrl+d 退出容器,再次使用 docker ps 命令,查看当前正在运行的容器,此时终端显示如下:
Docker exec命令 - 图5
原来正在运行的容器还在继续运行。
这里如果使用 docker attach 进入容器后,使用 exit 命令或者 Ctrl+d 退出容器那么运行的容器会退出。
使用 docker kill 和 docker rm 命令,删除所有容器。

  1. haicoder(www.haicoder.net)# docker kill `docker ps -qa` ; docker rm `docker ps -aq`

Docker exec命令总结

docker exec 命令可以用来在运行的 Docker容器中执行命令。该命令是需要容器处于运行中且 PID 1 进程也处于运行中才能执行的操作。
Docker exec命令语法:

  1. docker exec [options] container command [arg...]