簡介: 進入正在執行的docker容器的4種方式
在使用docker建立了容器之後,如何進入該容器呢?
進入docker容器比較常見的幾種做法如下:
接下來我們建立乙個守護態的docker容器,然後使用docker attach命令進入該容器。
$ sudo docker run -itd ubuntu:14.04 /bin/bash
然後我們使用docker ps檢視到該容器資訊,接下來就使用docker attach進入該容器
$ sudo docker attach 容器id
但在,使用該命令有乙個問題。當多個視窗同時使用該命令進入該容器時,所有的視窗都會同步顯示。如果有乙個視窗阻塞了,那麼其他視窗也無法再進行操作。
因為這個原因,所以docker attach命令不太適合於生產環境,平時自己開發應用時可以使用該命令。
在生產環境中排除了使用docker attach命令進入容器之後,相信大家第乙個想到的就是ssh。在映象(或容器)中安裝ssh server,這樣就能保證多人進入
容器且相互之間不受干擾了,相信大家在當前的生產環境中(沒有使用docker的情況)也是這樣做的。但是使用了docker容器之後不建議使用ssh進入到docker容
為什麼不需要在 docker 容器中執行 sshd
在了解了什麼是nsenter之後,系統預設將我們需要的nsenter安裝到主機中
如果沒有安裝的話,按下面步驟安裝即可(注意是主機而非容器或映象)
具體的安裝命令如下:
1. $ wget
2. $ tar -xzvf util-linux-2.24.tar.gz
3. $ cd util-linux-2.24/
4. $ ./configure --without-ncurses
5. $ make nsenter
6. $ sudo cp nsenter /usr/local/bin
安裝好nsenter之後可以檢視一下該命令的使用。
nsenter --help
nsenter可以訪問另乙個程序的命名空間。所以為了連線到某個容器我們還需要獲取該容器的第乙個程序的pid。可以使用docker inspect命令來拿到該pid。
docker inspect命令使用如下:
$sudo docker inspect --help
inspect命令可以分層級顯示乙個映象或容器的資訊。比如我們當前有乙個正在執行的容器
sudo docker ps
可以使用docker inspect來檢視該容器的詳細資訊。
$ sudo docker inspect 44fc0f0582d9
由其該資訊非常多,此處只擷取了其中一部分進行展示。如果要顯示該容器第乙個進行的pid可以使用如下方式
$ sudo docker inspect -f } 44fc0f0582d9
在拿到該程序pid之後我們就可以使用nsenter命令訪問該容器了。
$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid
其中的3326即剛才拿到的程序的pid
除了上面幾種做法之外,docker在1.3.x版本之後還提供了乙個新的命令exec用於進入容器,這種方式相對更簡單一些,下面我們來看一下該命令的使用:
$sudo docker exec --help
接下來我們使用該命令進入乙個已經在執行的容器
1. $ sudo docker ps
2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash
如何刪除所有正在執行的Docker容器
到現在為止 docker版本1.12 我們使用以下命令刪除所有正在執行的容器 如果我們要刪除卷,我們可以使用以下命令中的相應標記 v手動執行此操作 刪除所有已退出的容器 docker rm docker ps q f status exited 刪除所有已停止的容器 docker rm docker...
docker給正在執行的容器新增埠對映
給正在執行的容器新增埠對映 如果乙個容器已經在執行,想要給當前容器新增新的埠對映是沒有相關的docker命令的 我們採用常規操作,即將容器打包成映象後再建立新的容器 1.停止正在執行的容器 docker ps 獲取容器id docker stop 61371241a1a7 2.將容器打包成新的映象 ...
docker進入後台執行的容器
我們執行docker容器的時候,使用了 d引數,把容器在後台執行後。這個時候,我們使用docker ps命令,我們就可以知道哪些程式在後台執行。我們要怎麼進入到docker容器呢?1 使用docker attach命令 我們使用 docker attach db3 或者 docker attach ...