三 docker常用命令

2021-08-20 11:10:41 字數 3689 閱讀 8181

在docker中利用tomcat快速部署web應用

yum install -y docker
docker pull tomcat
--name webdemo -p 80:8080 tomcat /bin/bash

從容器複製到主機sudo docker cp containerid:container_path host_path

我們這裡用的命令是:

這個頁面只是我用來做演示的,所以大家有別的小應用都可以試試看!

docker run:建立並啟動容器。

t:告訴docker為容器建立乙個命令列終端。

name:指定容器名稱,可以不填(隨機),建議根據具體使用功能命名,便於管理。

centos:告訴我們使用什麼映象來啟動容器。

/bin/bash:告訴docker要在容器裡面執行此命令。

c: 通過-c可以調整容器的cpu優先順序。預設情況下,所有的容器擁有相同的cpu優先順序和cpu排程週期,但你可以通過docker來通知核心給予某個或某幾個容器更多的cpu計算週期。比如,我們使用-c或者–cpu-shares =0啟動了c0、c1、c2三個容器,使用-c/–cpu-shares=512啟動了c3容器。這時,c0、c1、c2可以100%的使用cpu資源(1024),但c3只能使用50%的cpu資源(512)。如果這個主機的作業系統是時序排程型別的,每個cpu時間片是100微秒,那麼c0、c1、c2將完全使用掉這100微秒,而c3只能使用50微秒。

-c後的命令是迴圈,從而保持容器的執行。

docker ps:可以檢視正在執行的docker容器。

docker ps -a:檢視所有容器,包括停止的。

docker ps -l:檢視最新建立的容器,只列出最後建立的。

docker ps -n=2:-n=x選項,會列出最後建立的x個容器。

通過docker start來啟動之前已經停止的docker_run映象。
–restart(自動重啟)

:預設情況下容器是不重啟的,–restart標誌會檢查容器的退出碼來決定容器是否重啟容器。 

docker kill [name]/[container id]:強制停止乙個容器。

容器終止後,在需要的時候可以重新啟動,確定不需要了,可以進行刪除操作。
一次性刪除

:docker本身沒有提供一次性刪除操作,但是可以使用如下命令實現:

在使用docker建立了容器之後,大家比較關心的就是如何進入該容器了,其實進入docker容器有好幾多種方式,這裡我們就講一下常用的幾種進入docker容器的方法。

進入docker容器比較常見的幾種做法如下:

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

接下來我們建立乙個守護態的docker容器,然後使用docker attach命令進入該容器。

$ sudo docker run -itd ubuntu:14.04 /bin/bash  

然後我們使用docker ps檢視到該容器資訊,接下來就使用docker attach進入該容器

$ sudo docker attach 44fc0f0582d9  

可以看到我們已經進入到該容器中了。

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

因為這個原因,所以docker attach命令不太適合於生產環境,平時自己開發應用時可以使用該命令。

在生產環境中排除了使用docker attach命令進入容器之後,相信大家第乙個想到的就是ssh。在映象(或容器)中安裝ssh server,這樣就能保證多人進入

容器且相互之間不受干擾了,相信大家在當前的生產環境中(沒有使用docker的情況)也是這樣做的。但是使用了docker容器之後不建議使用ssh進入到docker容

器內。關於為什麼不建議使用,請參考如下文章:

為什麼不需要在 docker 容器中執行 sshd

在上面兩種方式都不適合的情況下,還有一種比較方便的方法,即使用nsenter進入docker容器。關於什麼是nsenter請參考如下文章:

在了解了什麼是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之後可以檢視一下該命令的使用。

nsenter可以訪問另乙個程序的命名空間。所以為了連線到某個容器我們還需要獲取該容器的第乙個程序的pid。可以使用docker inspect命令來拿到該pid。

docker inspect命令使用如下:

$ sudo docker inspect --help  

inspect命令可以分層級顯示乙個映象或容器的資訊。比如我們當前有乙個正在執行的容器

可以使用docker inspect來檢視該容器的詳細資訊。

由其該資訊非常多,此處只擷取了其中一部分進行展示。如果要顯示該容器第乙個進行的pid可以使用如下方式

在拿到該程序pid之後我們就可以使用nsenter命令訪問該容器了。

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

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

其中的3326即剛才拿到的程序的pid

位址如下:

四、使用docker exec進入docker容器

除了上面幾種做法之外,docker在1.3.x版本之後還提供了乙個新的命令exec用於進入容器,這種方式相對更簡單一些,下面我們來看一下該命令的使用:

接下來我們使用該命令進入乙個已經在執行的容器

$ sudo docker ps  

$ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

docker常用命令 Docker 常用命令筆錄

格式docker run 選項 映象 命令 引數.示例docker run it rm ubuntu 16.04 bash 示例解釋 it 這是兩個引數,乙個是 i,表示互動式操作,乙個是 t表示終端 rm 這個引數是說容器退出後隨之將其刪除 ubuntu 16.04 這是指用ubuntu 16.0...

docker常用命令

1.刪除已退出的容器 docker rm docker ps a q 2.強制刪除所有容器 docker rm f docker ps a 3.docker attach 進不去的時候可以用docker exec it containerid bin bash docker run it ubunt...

docker常用命令

docker常用命令 1.進入docker容器 sudo docker run it insaneworks centos bin bash 使用ctrl p或者ctrl q可以進入和退出容器 2.拉去乙個映象 docker pull insaneworks centos 檢視所有的映象 docke...