Docker exec命令

Docker exec命令概述

docker exec 命令可以用来在运行的 Docker容器 中执行命令。

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

Docker exec命令语法

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 命令,在后台运行一个容器。

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

使用 docker ps 命令,查看当前正在运行的容器,显示如下图,所示:

05 docker ps.png

使用 docker exec 命令,在运行的容器中执行命令 pwd,即查看当前目录。

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

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

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

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

haicoder(www.haicoder.net)# docker kill haicoder #输出 haicoder haicoder(www.haicoder.net)# docker rm `docker ps -aq` #输出 5ee4fdbe4021

创建文件

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

haicoder(www.haicoder.net)# docker run -it -d --name haicoder centos /bin/bash #输出 a2e8af9df8688b848ba5459fcaa47b0a3db2c7cdaaeba92163bf93597081ca08

使用 docker ps命令,查看当前正在运行的容器,显示如下图,所示:

06 docker ps.png

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

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

此时终端没有任何输出,即 docker 容器的 /etc 目录,没有 haicoder 文件。

使用 docker exec 命令,在 docker 容器内部的 /etc 目录,创建一个 haicoder 文件。

haicoder(www.haicoder.net)# docker exec haicoder mkdir /etc/haicoder

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

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

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

进入容器

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

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

使用 docker ps命令,查看当前正在运行的容器,显示如下图所示:

07 docker exec.png

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

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

08 docker exec.png

此时,终端提示符变成了容器Id,即我们进入了 docker容器内部。使用 exit 命令或者 Ctrl+d 退出容器,再次使用 docker ps 命令,查看当前正在运行的容器,此时终端显示如下:

09 docker exec.png

原来正在运行的容器还在继续运行。

这里如果使用 docker attach 进入容器后,使用 exit 命令或者 Ctrl+d 退出容器那么运行的容器会退出。

使用 docker kill 和 docker rm 命令,删除所有容器。

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

Docker exec命令总结

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

Docker exec命令语法:

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