導航:首頁 > 程序命令 > 進入docker容器命令

進入docker容器命令

發布時間:2023-03-25 06:03:51

① 如何打開多個終端進入Docker容器

打開多個終端進入Docker容器有很多種方法,包括使用 docker attach 命令或 nsenter 工具等。

使用 attach 命令有時候並不方便。當多個窗口同時 attach 到同一個容器的時候,所有窗口都會同步顯示。

nsenter 可宴尺以訪問另一個進程的名字空間。

為了連接到容器,你還需要找到容器的第一個進程的 PID,可以通過下面的命令獲取。

PID=$(docker inspect _format 「{{ .State.Pid }}」 <container>) //將<container>換成你的容器id

通過這個 PID,就可以連接到這個容器:

$ nsenter _target $PID _mount _uts _ipc _net _pid

更簡單的,建議大家下載 .bashrc_docker,並將內容放到 .bashrc 中。

$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;

$ echo 「[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker」 >> ~/.bashrc; source ~/.bashrc

這衡鋒個文件中定義了很多方便使用 Docker 的命令,例如 docker-pid 可以獲取某個容器的 PID;而 docker-enter 可以進入容器或直接晌攔高在容器內執行命令。

$ echo $(docker-pid <container>)

$ docker-enter <container>

附.bashrc_docker文件內容:

# Some useful commands to use docker.

# Author: yeasy@github

# Created:2014-09-25

alias docker-pid=」sudo docker inspect _format 『{{.State.Pid}}』」

alias docker-ip=」sudo docker inspect _format 『{{ .NetworkSettings.IPAddress }}』」

#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter

function docker-enter() {

if [ -e $(dirname "$0")/nsenter ]; then

# with boot2docker, nsenter is not in the PATH but it is in the same folder

NSENTER=$(dirname 「$0″)/nsenter

else

NSENTER=nsenter

fi

[ -z "$NSENTER" ] && echo 「WARN Cannot find nsenter」 && return

if [ -z "$1" ]; then

echo 「Usage: `basename 「$0″` CONTAINER [COMMAND [ARG]?]」

echo 「」

echo 「Enters the Docker CONTAINER and executes the specified COMMAND.」

echo 「If COMMAND is not specified, runs an interactive shell in CONTAINER.」

else

PID=$(sudo docker inspect _format 「{{.State.Pid}}」 「$1″)

if [ -z "$PID" ]; then

echo 「WARN Cannot find the given container」

return

fi

shift

OPTS=」_target $PID _mount _uts _ipc _net _pid」

if [ -z "$1" ]; then

# No command given.

# Use su to clear all host environment variables except for TERM,

# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,

# and start a login shell.

#sudo $NSENTER 「$OPTS」 su _ root

sudo $NSENTER _target $PID _mount _uts _ipc _net _pid su _ root

else

# Use env to clear all host environment variables.

sudo $NSENTER _target $PID _mount _uts _ipc _net _pid env -i $@

fi

fi

}

② Docker常用命令大全

基礎操作:

1  docker images  查看鏡像信息列表 鏡像是靜態的

2  docker ps -a  查看運行中的所有容器

3  docker pull  [images]:[version] 從dockerhub拉取指定鏡像

4  docker run -p 8000:80 -tdi --privileged [imageID] [command]   後台啟動docker,並指定宿主機埠和docker映射埠。

  -i: 以交互模式運行容器,通常與 -t 同時使用;

  -d: 後台運行容器,並返回容器ID;

-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

--privileged  容器將擁有訪問主機所有設備的許可權

通常情況下 [command] 填下  /bin/bash  即可。

特殊情況下,如需要在centos鏡像中使用 systemctl  . 則應添加 --privileged  並設置[command ]為  init 。

5 當鏡像通過run 啟動後,便會載入到一個動態的container(容器)中運行,此時若需要進入終端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用  ctrl+p+q退出交互 保持運行,使用 exit命令退出並停止容器。

6 在容器非交互模式下,通過docker  start/stop 命令來啟動/停止已部署的容器服務。

7  docker rm [containerID]  刪除容器

8  docker rmi [imageID]  刪除鏡像

9 docker cp [YourHostFilePath] [containerID]:[DockerPath]  將宿主機內的指定文件傳輸至容器內部的指定地址。

鏡像製作:

1   docker commit [containerID] [ImageName]:[Version]  將修改後的容器重新打包成鏡像

2  docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1  將容器a404c6c174a2 保存為新的鏡像,並添加提交人信息和說明信息。

-a  :提交的鏡像作者;

  -c  :使用Dockerfile指令來創建鏡像;

  -m  :提交時的說明文字;

  -p  :在commit時,將容器暫停。

3  docker push [ImageID] [repertory_address] 提交鏡像到雲倉庫

(暫時先記錄這些,後續再更新)

③ Docker命令全集

一:首先來理解三個名詞解釋:

1、鏡像(image)
Docker 鏡像(Image)就是一個只讀的模板。

例如:一個鏡像可以包含一個完整的操作系統環境,裡面僅安裝了 Apache 或用戶需要的其它應用程序。鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器。

2、倉庫(repository)
倉庫(Repository)是集中存放鏡像文件的場所。

3、容器(container)
Docker 利用容器(Container)來運行應用。容器是從鏡像(Image)創建的運行實例。


二:常用的命令集合如下:

容器生命周期管理 — docker
[run|start|stop|restart|kill|rm|pause|unpause|create]


容器操作運維 — docker
[ps|exec|inspect|top|attach|events|logs|wait|export|import|port]


容器rootfs命令 — docker
[commit|cp|diff]


本地鏡像管理 — docker
[images|rmi|tag|build|history|save]


鏡像倉庫 — docker
[login|pull|push|search]


其他命令 — docker
[info|version]


詳細命令說明如下:

docker run -d --name alias-Name imageName //在後台啟動一個容器
docker start Name/ID //啟動容器
docker stop Name/ID //停止容器
docker restart Name/ID //重啟容器
docker kill -s KILL Name/ID //殺死一個運行的容器
docker rm /rm -f Name/ID //刪除容器
docker pause Name/ID //停止容器
docker unpause Name/ID //恢復容器
docker create --name CONTAINER_Name imageName //只創建容器但不啟動

docker ps / docker ps -a //查看運行的容器
docker exec -it CONTAINER_ID /bin/bash //進行一個運行中的容器,開啟一個新的終端
docker attach CONTAINER_ID //進行一個運行中的容器,不開啟一個新的終端
docker inspect CONTAINER_Name //查看容器的相關信息
docker top CONTAINER_Name //查看容器裡面的進程
docker events -f "image"="imageName" --since="1467302400" //時間戳=2016年7月1日後的相關事件
docker logs CONTAINER_Name //查看容器的日誌輸出
docker wait CONTAINER_Name //阻塞運行直到容器停止,然後列印出它的退出代碼
docker export -o test.tar CONTAINER_ID //將容器進行打包保存到本地,文件類型為tar
cat test.tar |docker import - image_name:tag //將上面保存的文件導入到鏡像庫中
docker port CONTAINER_ID //查看容器的埠映射情況

commit 從容器中創建一個新的鏡像
docker commit -a "tony test" -m "my mysql" CONTAINER_ID mymysql:v1
docker images mymysql:v1
cp 在使用的過程中會進行多個主機與容器之間的數據交換
docker cp /ruiqi/content CONTAINER_ID:/ruiqi/
diff 用來檢查容器裡面文件結構的更改
docker diff CONTAINER_ID


docker images /docker images -a //查看本地的鏡像,-a 表示是所有的鏡像
docker rmi -f image_name //刪除鏡像
docker tag mysql:v5.6 mysql:v5.7 //給鏡像做一個有別名的復本
docker build -t runoob/ubuntu:v1 . //構建一個鏡像
docker history image_name //查看當前這個鏡像的 歷史 信息
docker save -o TestFlask.tar TestFlask:v3 //將當前的鏡像保存到本地的一個tar 類型的文件


docker login //登錄鏡像倉庫

docker pull //從鏡像倉庫中拉鏡像

docker push //向鏡像倉庫推本地的鏡像文件

docker search //檢索鏡像內容


三:利用dockerfile 製作一個tomcat 運行image:

[root@localhost common]# more Dockerfile.tomcat
FROM cloud.io/centos:7
COPY jdk-8u144-linux-x64.rpm /opt/jdk-8u144-linux-x64.rpm
RUN ["rpm","-ivh","/opt/jdk-8u144-linux-x64.rpm"]
COPY security /usr/java/jdk1.8.0_144/jre/security
COPY certs /etc/pki/tls/certs
COPY tomcat /opt/tomcat
RUN ["ln","-s","/opt/tomcat","/usr/local/tomcat"]

④ 使用tmux進入docker容器

每次進入容器中都要重復執行
docker exec -it name /bin/bash 這些命令,有些還需要反復配置環境變數
使用tmux可以避免這些操作!

終端輸入 tmux 會啟動 Tmux 窗口, 底部有一個狀態欄。狀態欄的左側是窗口信息(編號和名稱,帶*的是當前窗口),右側是系統信息

命令行的典型使用方式是,打開一個終端窗口(乎李terminal window,以下簡稱"窗口"),在裡面輸入命令。 用戶與計算機的這種臨時的交互,稱為一次"會話"(session)

會話的一個重要特點是,窗口與其中啟動的進程是連在一起的。打開窗口,會話開始;關閉窗口,會話結束,會話內部的進程也會隨之終止,不管有沒有運行完。

一個典型的例子就是,SSH 登錄遠程計算機,打開一個遠程窗口執行命令。這時,網路突然斷線,再次登錄的時候,是找不回上一次執行的命令的。因為上一次 SSH 會話已經終止了,裡面的進程也隨之消失了。

為了解決這個問題,會話與窗口可以"解綁":窗口關閉時,會話並不終止,而是繼續運行,等到以後需要的時候,再讓會話"綁定"其他窗口。

Tmux 就是會話與窗口的"解綁"工具,將它們徹底分離。

(1)它允許在單個窗口中,同時訪問多個會話。這對於同時運行多個命令行程序很有用。
(2) 它陵指可以讓新窗口"接入"已經存在的會話。
(3)它允許每個歲汪遲會話有多個連接窗口,因此可以多人實時共享會話。
(4)它還支持窗口任意的垂直和水平拆分。

第一個啟動的 Tmux 窗口,編號是0,第二個窗口的編號是1,以此類推。這些窗口對應的會話,就是 0 號會話、1 號會話。

使用編號區分會話,不太直觀,更好的方法是為會話起名。

⑤ 如何進入Docker容器

步驟1:為我們的容器創建第一個鏡像#以centos鏡像作為基礎鏡像,我們啟動自己的容器並在其中執行/bin/bash命令#註:-t-i參數用於創建一個虛擬的命令行。sudodockerrun-t-icentos/bin/bash現在我們已經成功的運行了自己的第一個容器,並且進入到容器的命令行界面中。在容器中,我們執行下面的命令:yum-yupdate#更新軟體包yuminstallwhich#安裝which命令yuminstallgit#安裝Git安裝完成後,按Ctrl+d來退出容器的命令行。#執行sudodockerps-a,可以看到被我們終止的容器……da9031d3568fcentos:6.4/bin/bash5minutesago…..把我們所做的改變提交到一個新的容器:#這里我們創建一個自己的基礎容器,容器中安裝好了文章中所需的枝游常用工具。讀者的容器id可能與文章中的有所不同,以上一步dockerps-a的結果為准。sudodockercommitda90custom/base容器成功提交後,執行sudodockerimages,我們會看到剛才提交的容器(如下面的結果所示)。我們就以這個容器為基礎容器,再來創建一個新的容器。/.…步驟2:創建新的容器,並安裝apache#以custom/base容器為基礎,運行一個新的容器。sudodockerrun-t-icustom/base/bin/bash#安裝httpdyuminstallhttpd步驟3:再次提交新的容器按Ctrl+d來退出容器的命令行,然後執行命令:#這個命令會把步驟2中我們安裝httpd帶來的改變提交到新的名為custom/httpd的容器鏡像中。你的容器id可能會和文章中有所不同,以sudodockerps-a命令的結果為准。/httpd你應該已經發現了,我們創建了一個帶有http伺服器並可以復用的容器鏡像。你可以根據這種思想,為自己所需的每個組件都創建一個容器,然後把這些容器復用於開發環境或者生產環境。步驟7:運行http伺服器#-ntVM.#-v參數把主機共享給虛擬機的一個卷掛載到容器中#-;#-p參數把虛擬機的80埠映射到容器的80埠;虛擬機的80埠在Vagrantfile中被綁定到褲老主機的8080埠,也就猛純銷是:主機8080->虛擬機80->容器80sudodockerrun-t-i-p80:80-v/vagrant/htdocs:/var/www/htmlcustom/httpd/bin/bash#啟動Apacheapachectl-kstart

閱讀全文

與進入docker容器命令相關的資料

熱點內容
文件壓縮包如何加密文件 瀏覽:183
2010提出的演算法 瀏覽:672
冰櫃壓縮機的壽命 瀏覽:105
辦公室采訪程序員 瀏覽:569
美橙雲伺服器購買 瀏覽:754
漢語詞典pdf下載 瀏覽:353
android公網ip 瀏覽:613
要塞1地圖放哪個文件夾 瀏覽:850
凡科建站怎麼弄伺服器 瀏覽:939
蘋果手機怎麼設置app播放 瀏覽:202
下載網站源碼用什麼瀏覽器 瀏覽:241
六線譜pdf 瀏覽:156
linuxmysqlsock 瀏覽:239
人教版數學pdf下載 瀏覽:460
文檔安全加密系統 瀏覽:492
數控銑床編程簡單數字 瀏覽:788
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503
安卓系統怎麼快速刪除微信內容 瀏覽:653