您好,登錄后才能下訂單哦!
本文介紹了Docker如何進入啟動容器,分享給大家,具體如下:
在使用-d參數時,容器啟動后會進入后臺,用戶無法看到容器中的信息,也無法進行操作。
這個時候如果需要進入容器進行操作,有多種方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。
1、attach命令
attach命令是Docker自帶的命令,命令格式為:
docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[=true]] Container
支持三個主要選項:
·–detach-keys[=[]]:指定退出attach模式的快捷鍵序列,默認是CTRL-p CTRL-q;
·–no-stdin=true|false:是否關閉標準輸入,默認是保持打開;
·–sig-proxy=true|false:是否代理收到的系統信號給應用進程,默認為true。
但是,使用attach命令有時候并不方便。當多個窗口同時使用attach命令連到同一個容器的時候,所有窗口都會同步顯示。當某個窗口因命令阻塞時,其他窗口也無法執行操作了。
2、exec命令
Docker從1.3.0版本起提供了一個更加方便的exec命令,可以在容器內直接執行任意命令。該命令的基本格式為:
docker exec [-d|–detach] [–detach-keys[=[]]] [-i|–interactive] [–privileged] [-t|–tty] [-u|–user[=USER]] CONTAINER COMMAND [ARG…]。
比較重要的參數有:
·-i,–interactive=true|false:打開標準輸入接受用戶輸入命令,默認為false;
·–privileged=true|false:是否給執行命令以高權限,默認為false;
·-t,–tty=true|false:分配偽終端,默認為false;
·-u,–user=”“:執行命令的用戶名或ID。
例如進入到剛創建的容器中,并啟動一個bash:
可以看到,一個bash終端打開了,在不影響容器內其他應用的前提下,用戶可以很容易與容器進行交互。
通過指定-it參數來保持標準輸入打開,并且分配一個偽終端。通過exec命令對容器執行操作是最為推薦的方式。
3、nsenter 工具
在util-Linux軟件包版本2.23+中包含nsenter工具。如果系統中的util-linux包沒有該命令,可以按照下面的方法從源碼安裝:
$ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24; $ ./configure --without-ncurses $ make nsenter && cp nsenter /usr/local/bin
為了使用nsenter連接到容器,還需要找到容器進程的PID,可以通過下面的命令獲取:
PID=$(docker inspect --format "{{ .State.Pid }}" )
通過這個PID,就可以連接到這個容器:
$ nsenter --target $PID --mount --uts --ipc --net --pid
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。