這篇文章主要講解了“訪(fǎng)問(wèn)Docker容器的方法有哪些”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“訪(fǎng)問(wèn)Docker容器的方法有哪些”吧!
使用docker創(chuàng )建了容器之后,大家比較關(guān)心的就是如何在宿主機中訪(fǎng)問(wèn)容器,進(jìn)入docker容器的方法有好幾種,這里就羅列下我知道的幾種方式。進(jìn)入docker容器的比較常見(jiàn)的方式如下:
使用 docker attach container
使用 ssh
使用 nsenter
使用 exec
Docker提供了attach命令來(lái)進(jìn)入容器.docker attach的help如下
Usage: docker attach [OPTIONS] CONTAINER Attach to a running container Options: --detach-keys string Override the key sequence for detaching a container --help Print usage --no-stdin Do not attach STDIN --sig-proxy Proxy all received signals to the process (default true)
我們首先創(chuàng )建一個(gè)運行在守護態(tài)的docker容器,然后使用docker attach命令進(jìn)入該容器
//啟動(dòng)一個(gè)docker容器 docker run -itd saltstack/ubuntu-14.04 /bin/bash
使用docker ps -a查看該容器的容器id,結果如下:
這里我們可以看到該容器的id為43bdf46c62e1,這時(shí)候我們就可以執行 docker attach 43bdf46c62e1
命令來(lái)進(jìn)入剛剛啟動(dòng)的容器,如圖所示:
但是使用docker attach命令會(huì )有一個(gè)副作用。當多個(gè)窗口使用該命令進(jìn)入43bdf46c62e1r容器的時(shí)候所有的窗口都會(huì )同步顯示。如果有一個(gè)窗口阻塞了,那么其他的窗口再也無(wú)法進(jìn)行其他的操作。多個(gè)窗口同步顯示如圖所示:
對于容器的使用,除了attach命令之外,比較容易想到的就是使用ssh的方式連接容器,在容器中安裝ssh server,這樣就能保證多人進(jìn)入容器且互不干擾。關(guān)于為什么不建議使用,請參考這篇文章: Why you don’t need to run SSHd in your Docker containers 。(英文不好可以看到 中文版 )
在上面兩種方式都不適合的情況下,還有一種比較方便的方法,即使用nsenter進(jìn)入Docker容器。關(guān)于什么是nsenter請參考 nsenter github repo .
安裝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
下面的話(huà),我們需要使用nsenter進(jìn)入容器內部。首先我們需要獲取容器的PID號。這里如果通過(guò)執行 docker inspect 31ced27e1684
來(lái)獲取容器的PID號為44543。然后通過(guò)改PID號,執行 nsenter --target 44543 --mount --uts --ipc --net --pid
如下圖所示:
除了上面的做法之外,docker在1.3.x版本之后還提供了一種新的方式進(jìn)入容器。這種方式相對簡(jiǎn)單
docker exec --help Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container -d, --detach Detached mode: run command in the background --detach-keys Override the key sequence for detaching a container --help Print usage -i, --interactive Keep STDIN open even if not attached --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY -u, --user Username or UID (format: <name|uid>[:<group|gid>])
接下來(lái),我們通過(guò) exec
來(lái)進(jìn)入一個(gè)已經(jīng)在運行的容器
//查看已經(jīng)在運行的容器ID docker ps -a //通過(guò)exec命令對指定的容器執行bash docker exec -it 31ced27e1684 /bin/bash
如圖所示:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站