通過前面兩篇博客的掃盲,你們多多少少對docker有了一個基本的瞭解,也接觸了docker的經常使用命令。在這篇博客中,我將介紹進入docker容器的幾種方式。php
Docker提供了attach命令來進入Docker容器html
docker run -itd nginx-name mynginx docker attach mynginx # 或者 docker attach mynginx
優缺點:
當多個窗口使用該命令進入該容器時,全部窗口都會顯示同步。若是一個窗口阻塞了,其餘窗口沒法再進行操做;。
所以docker attach命令不太適合於生產環境。且該命令有點古老,不太建議使用mysql
PS:linux
最近在家裏的windows系統中使用docker attach mynginx命令進入docker容器卡死窗口。可能該命令太古老了,高版本用有點問題。nginx
dockerc之初識這一篇博客文章中,咱們就瞭解到docker就是一個隔離的盒子,最原始初始化的盒子咱們能夠將它當作一個mini型的linux虛擬機,咱們在該盒子中安裝咱們須要的服務(例如:nginx、mysql、redis等),打包以後就造成了目前最爲流行的docker應用容器。既然是一個linux虛擬主機,那麼咱們就能夠在該主機上面安裝一個ssh server就能夠經過ssh協議來鏈接該容器了。redis
不過這種方式也基本沒什麼人用,出力不討好。哈哈,那是由於後面有一種既安全又便捷的命令用啦。sql
能夠去看一下這個老外寫的緣由:爲何不須要在 Docker 容器中運行 sshddocker
對於nsenter網上有比較多且詳細的介紹,這裏我就說一下我本身理解。windows
我的理解nsenter:經過容器在宿主機中的pid進行通信
所以:nsenter須要在宿主機安裝而非容器或者鏡像安全
# 安裝nsenter $ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz $ tar -xzvf util-linux-2.24.tar.gz $ cd util-linux-2.24/ $ ./configure --without-ncurses $ make nsenter $ sudo cp nsenter /usr/local/bin $ nsenter --help # nsenter能夠訪問另外一個進程名稱空間。所以咱們須要獲取容器的PID sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9 // 假設進程號爲 4426 $ sudo nsenter --target 4426 --mount --uts --ipc --net --pid # --target 4426 目標pid
docker在1.3.x版本以後提供了一個新命令exec用戶進入容器。
該命令是本篇博客中的主角,是個大boss。上面的三種方式都是爲了陪襯它的存在,鬱悶臉。。。
該方法是最經常使用的方法,沒有之一!!!!!
$ docker ps $ docker exec -it mynginx /bin/bash
對,你沒看錯,這個命令就是這麼簡單。
(以上是本身的一些看法,如有不足或者錯誤的地方請各位指出)
做者:那一葉隨風 http://www.cnblogs.com/phpstudy2015-6/
原文地址: https://www.cnblogs.com/phpstudy2015-6/p/9961231.html
聲明:本博客文章爲原創,只表明本人在工做學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文連接