Docker 進入啟動容器

2021-08-01 07:33:09 字數 1850 閱讀 9197

在使用-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 

/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

"}" )

通過這個pid,就可以連線到這個容器:

$

nsenter--

target

$pid--

mount--

uts-

-ipc--

net-

-pid

Docker宿主啟動容器mysql

使用docker官方映象安裝mysql服務 1 拉取mysql映象,採用網易加速位址 2 重新命名映象名 3 建立用於掛載的目錄 sudo mkdir my mysql datadir 用於掛載mysql資料檔案 sudo mkdir my mysql conf.d 用於掛載mysql配置檔案 su...

Docker run 啟動容器

docker run options image command arg.名稱 描述 a指定標準輸入輸出內容型別,可選 stdin stdout stderr 三項 詳情 w指定容器的工作目錄 c指定容器cpu權重,在cpu共享場景使用 m指定容器的記憶體上限 d後台執行容器,並返回容器id 詳情 ...

Docker每次啟動容器,IP及hosts指定

前言 每次在使用docker啟動hadoop集群的時候,都需要重新繫結下網絡卡,固定ip,同時修改 etc hosts檔案,非常麻煩,於是想探尋下原因及優化。一 原因 etc hosts,etc resolv.conf和 etc hostname,容器中的這三個檔案不存在於映象,在啟動容器的時候,通...