1、在啟動容器的時候,有時候我們加了參數-d,這時容器自動進入后台運行。如果我們要進入容器,該怎么辦?通常使用docker attach命令和nsenter工具。
2、docker attach是Docker自帶的命令。
$ docker run -idt centos $ docker ps $ docker attach 9b930d9d1e20 $ docker attach cocky_carson
該命令有時候並不方便,因為他是同步的,若有多個用戶attach到一個容器,一個窗口命令阻塞,其他窗口都無法執行。
3、nsenter命令:在util-linux包2.23版本后都有自帶包含。nsenter可以訪問另一個進程的名字空間。
是否安裝nsenter,通過nsenter --version查看。
a.安裝nsenter
$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz $ tar -zxvf util-linux-2.24.tar.gz $ cd util-linux-2.24 $ ./configure --without-ncurses && make nsenter $ cp nsenter /usr/local/bin
b.通過nsenter命令進入容器
為了鏈接到容器,需要知道容器的PID,可以使用inspect獲取,如:
docker inspect -f {{.State.Pid}} 5fbe4b029608 ##獲取PID,5fbe4b029608為容器ID
docker inspect 5fbe4b029608 ##查看該容器的詳細信息
獲取了PID之后,就可以通過下面的命令進入容器了
nsenter --target 31353 --mount --uts --ipc --net --pid ##31353為"docker inspect -f {{.State.Pid}} 5fbe4b029608"輸出的結果