zoukankan      html  css  js  c++  java
  • Docker

    进入容器交互终端

    使用docker attach命令进入容器交互终端。
    注意:如果多个窗口同时attach到同一个容器,那么所有窗口都会同步显示。如果某个窗口因命令阻塞时,那么其他窗口将无法执行操作。

    [root@CentOS-7 ~]# docker images ubuntu
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/ubuntu    latest              6a2f32de169d        13 days ago         117.2 MB
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker run --name test -idt ubuntu
    6a0e7b067fe3122ad23b34d84653ca0872cda44efff903198f41e76e017e4a26
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    6a0e7b067fe3        ubuntu              "/bin/bash"         7 seconds ago       Up 7 seconds                            test
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker attach test
    root@6a0e7b067fe3:/# 
    root@6a0e7b067fe3:/# exit
    exit
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@CentOS-7 ~]# 
    

    退出容器交互终端

    通过Ctrl-p和Ctrl-q键,可以退出正在交互的容器终端,此时容器不会终止。
    特别注意:通过exit命令或Ctrl+d键来退出容器终端时,所创建的容器立刻终止。

    [root@CentOS-7 ~]# docker run --name test -it ubuntu bash
    root@a445204315f3:/# 
    root@a445204315f3:/#    # 先后按Ctrl-p和Ctrl-q键
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    a445204315f3        ubuntu              "bash"              36 seconds ago      Up 34 seconds                           test
    [root@CentOS-7 ~]# 
    

    使用nsenter工具进入容器交互终端

    nsenter启动一个新的shell进程(默认是/bin/bash), 同时会把这个新进程切换到和目标(target)进程相同的命名空间,相当于进入了容器内部。
    nsenter包含在util-linux 2.23版本之后,而且运行需要root权限。
    特别注意:通过exit命令或Ctrl+d键来退出容器终端时,所创建的容器不会终止。

    [root@CentOS-7 ~]# rpm -qa |grep util-linux
    util-linux-2.23.2-26.el7.x86_64
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    a445204315f3        ubuntu              "bash"              2 hours ago         Up 2 hours                              test
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# PID=$(docker inspect --format "{{ .State.Pid }}" test)
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# nsenter --target $PID --uts --ipc --net --pid
    [root@a445204315f3 ~]# 
    [root@a445204315f3 ~]# exit
    logout
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    a445204315f3        ubuntu              "bash"              2 hours ago         Up 2 hours                              test
    [root@CentOS-7 ~]# 
    
  • 相关阅读:
    zabbix实现原理及架构详解
    用Python玩转微信(一)
    你真的用好了Python的random模块吗?
    Authentication of Django
    Django admin 权威指南(一)
    常用查找数据结构及算法(Python实现)
    基于python的七种经典排序算法
    Django 1.10 中文文档------3.2.2 查询操作making queries
    “全能”选手—Django 1.10文档中文版Part4
    Django 1.10 中文文档------3.2.1 模型Models
  • 原文地址:https://www.cnblogs.com/anliven/p/6771214.html
Copyright © 2011-2022 走看看