docker容器工具nsenter

2021-08-19 19:18:56 字數 1928 閱讀 3277

對於執行在後台的docker容器,我們經常需要做的事情是進入到容器中,docker為我們提供了docker exec 、docker attach 命令,並且還提供了nsenter工具,外部工具供我們使用。docker attach存在的問題是:當多個視窗同時attach到同乙個容器時,所有的視窗都會同步的顯示,假如其中的乙個視窗發生阻塞時,其它的視窗也會阻塞,docker attach命令可以說是最不方便的進入後台docker容器的方法。docker exec命令是在docker 1.3之後增加的乙個比docker attach命令更加方便的命令。和docker exec差不多方便的命令是nsenter工具。

nsenter安裝

$ cd /tmp;

$ curl | tar -zxf-; cd util-linux-2.24;

$ ./configure  --without-ncurses

$ make nsenter && sudo cp nsenter /usr/local/bin

nsenter使用

在使用nsenter命令之前需要獲取到docker容器的程序,然後再使用nsenter工具進去到docker容器中,具體的使用方法如下:

$ docker inspect -f } 容器名或者容器id   #每乙個容器都有.state.pid,所以這個命令除了容器的id需要我們根據docker ps -a去查詢,其他的全部為固定的格式

$ nsenter --target 上面查到的程序id --mount --uts --ipc --net --pid  #輸入該命令便進入到容器中

解釋nsenter指令中程序id之後的引數的含義: 

* –mount引數是進去到mount namespace中 

* –uts引數是進入到uts namespace中 

* –ipc引數是進入到system v ipc namaspace中 

* –net引數是進入到network namespace中 

* –pid引數是進入到pid namespace中 

* –user引數是進入到user namespace中

在linux中,最愛簡單的檢視指定命令引數含義的辦法是在終端中輸入:

$ nsenter --help  #會回顯所有與該命令有關的引數

$ man nsenter  #能查到更加詳細的使用示例和引數說明

檢視docker的連線

由於使用docker的時候,established連線不會出現在netstat中,在執行中的docker容器中列出開啟的套接字的方法

,查詢docker的程序號 :

docker inspect -f '}'

$ docker inspect -f '}' 1746bf8c10aa  

1829

檢視連線: 

sudo nsenter -t -n netstat | grep established  

$ nsenter -t 1829 -n netstat |grep established  

tcp        0      0 localhost:60353         localhost:epmd          established

tcp        0      0 localhost:epmd          localhost:60353         established

tcp        0      0 localhost.localdo:15672 192.168.56.1:59679      established

tcp6       0      0 172.17.0.2:amqp         192.168.56.1:59898      established

tcp6      21      0 172.17.0.2:amqp         192.168.56.1:59571      established

docker容器 Docker 容器逃逸漏洞

2020年12月1日,阿里雲應急響應中心監測到 containerd 官方發布安全更新,修復了 docker 容器逃逸漏洞 cve 2020 15257 漏洞描述 containerd 是乙個控制 runc 的守護程序,提供命令列客戶端和 api,用於在乙個機器上管理容器。在特定網路條件下,攻擊者可...

docker學習 docker容器

1.容器檢視 已經啟動的容器 docker ps 所有的容器 docker ps a2.啟動容器相關引數 互動式容器 退出時容器處於停止狀態,無法使用 docker run it name mynginx nginx bin bash 退出當前容器 exit 守護式容器 埠88是宿主機的對映埠 do...

docker容器 2 容器操作

docker ps options options說明 a 顯示所有的容器,包括未執行的。f 根據條件過濾顯示的內容。format 指定返回值的模板檔案。l 顯示最近建立的容器。n 列出最近建立的n個容器。no trunc 不截斷輸出。q 靜默模式,只顯示容器編號。s 顯示總的檔案大小。docker...