《基于Kubernetes的容器云平台实战》——2.4 访问运行状态容器

举报
华章计算机 发表于 2019/06/02 00:42:53 2019/06/02
【摘要】 本书摘自《基于Kubernetes的容器云平台实战》——书中的第2章,第2.4节作者是陆平、左奇、付光、张晗、赵培、单良

2.4 访问运行状态容器

如果要直接改变运行状态容器的标准输入输出流,或者在其中执行程序,可以使用如下命令。

1.挂接运行状态容器标准流

docker container attach [OPTIONS] CONTAINER

将宿主机标准输入/标准输出流挂接到容器上,相当于切换到交互式运行。虽然支持多终端对同一容器挂接,但若某窗口阻塞时,其他窗口也无法操作。

--no-stdin不挂接容器的STDIN。--sig-proxy=false,不转发终端信号。比如在终端上输入Ctrl-C,只会退出attach状态,不会使容器运行终止。

2.在运行状态容器中执行命令

docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]

命令须在容器中可访问且只能为可执行程序或者shell,不能是shell命令串。

-d/--detach以后台方式执行,结果不回显;-i/--interactive以交互式执行命令,回显结果。-e/--env为命令设置环境变量。-t/--tty会分配伪终端。--privileged以特权方式执行命令。-u/--user以指定用户名或者UID执行命令,参数格式为<name|uid>[:<group|gid>]。-w/--workdir指定工作目录。

3. nsenter命令

只要进入Docker容器的命名空间中就可查看容器状态,在util-Linux软件包2.23以上版本中包含的nsenter工具就可以实现此功能。命令格式为:

nsenter [options] <program> [<argument>...]

若不进入mount命名空间,则待执行命令不必在容器文件视图中。

有-t/--target <pid>选项时,其他命名空间选项不必带有路径。-m/--mount;-u/--uts;-i/--ipc;-n/--net;-p/--pid;-U/--user选项指定要进入的命名空间。-Z/--follow-context使用目标进程SELinux上下文。

-F/--no-fork在执行命令之前不执行fork。-w/--wd和-r/--root指定工作目录和根目录。-S/--setuid和-G/--setgid分别为命令执行设定UID和GID。

获取容器进程ID可用如下命令:

docker container inspect -f="{{.State.Pid}}" <container>


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。