Docker之進入容器(三)

2021-09-18 01:51:58 字數 1936 閱讀 6040

閱讀目錄

回到頂部

1、簡介

經過前面兩篇部落格的掃盲,大家多多少少對docker有了乙個基本的了解,也接觸了docker的常用命令。在這篇部落格中,我將介紹進入docker容器的幾種方式。

回到頂部

2、進入docker中的幾種方式

回到頂部

2.1、使用docker attach命令進入docker

docker提供了attach命令來進入docker容器

docker run -itd nginx-name mynginx

docker attach mynginx

# 或者

docker attach mynginx

優缺點:

當多個視窗使用該命令進入該容器時,所有視窗都會顯示同步。如果乙個視窗阻塞了,其他視窗無法再進行操作;。

因此docker attach命令不太適合於生產環境。且該命令有點古老,不太建議使用

ps:最近在家裡的windows系統中使用docker attach mynginx命令進入docker容器卡死視窗。可能該命令太古老了,高版本用有點問題。

回到頂部

2.2、使用ssh進入docker容器

dockerc之初識這一篇部落格文章中,我們就了解到docker就是乙個隔離的盒子,最原始初始化的盒子我們可以將它當做乙個mini型的linux虛擬機器,我們在該盒子中安裝我們需要的服務(例如:nginx、mysql、redis等),打包之後就形成了目前最為流行的docker應用容器。既然是乙個linux虛擬主機,那麼我們就可以在該主機上面安裝乙個ssh server就可以通過ssh協議來連線該容器了。

不過這種方式也基本沒什麼人用,出力不討好。哈哈,那是因為後面有一種既安全又便捷的命令用啦。

可以去看一下這個老外寫的原因:為什麼不需要在 docker 容器中執行 sshd

回到頂部

2.3、使用nsenter進入docker容器

對於nsenter網上有比較多且詳細的介紹,這裡我就說一下我自己理解。

個人理解nsenter:通過容器在宿主機中的pid進行通訊

因此:nsenter需要在宿主機安裝而非容器或者映象

# 安裝nsenter

$ wget

$ 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 } 44fc0f0582d9 // 假設程序號為 4426

$ sudo nsenter --target 4426 --mount --uts --ipc --net --pid

# --target 4426 目標pid

回到頂部

2.4、使用docker exec命令進入docker容器

docker在1.3.x版本之後提供了乙個新命令exec使用者進入容器。  

該命令是本篇部落格中的主角,是個大boss。上面的三種方式都是為了襯托它的存在,鬱悶臉。。。

該方法是最常用的方法,沒有之一!!!!!

$ docker ps

$ docker exec -it mynginx /bin/bash

對,你沒看錯,這個命令就是這麼簡單。

(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)

進入Docker容器

該命令會在執行中的容器中執行乙個新的終端,然後你就可以在容器中執行命令。usage docker exec options container command arg.run a command in a running container options d,detach 分離模式 在後台執行命令...

進入Docker容器

在進入docker容器之前,首先要執行對應的docker容器,先使用命令docker ps檢視正在執行的容器。docker inspect format id 使用該命令檢視對應id容器的ip位址 下面是方法 一 使用docker attach id進入docker容器 這種方法不最先推薦,有時候會...

docker進入容器命令

兩種方式,第一種 docker attach 44fc0f0582d9但是這種方式有缺點,當多個視窗同時使用該命令進入該容器時,所有的視窗都會同步顯示。如果有乙個視窗阻塞了,那麼其他視窗也無法再進行操作。推薦第二種 docker exec it 44fc0f0582d9 bin bash注 如果出現...