1. 程式人生 > >【Docker學習總結】5.Docker容器的基本操作

【Docker學習總結】5.Docker容器的基本操作

上一篇我們介紹了Docker的安裝和部署,本篇總結Docker安裝完畢後,我們如何進行一些基本的操作。

首先開啟我們之前安裝好docker ce的Cent OS7虛擬機器,使用“docker version”驗證docker已經安裝成功:

然後我們來學習如何操作docker容器:

(1)啟動容器

在docker中,我們使用run命令來啟動一個容器,並執行容器中的命令。
run命令的格式如下:

docker run IMAGE [COMMAND][ARG...]

其中第一個引數“IMAGE”,是指定啟動容器所指定的作業系統映象。後面的“COMMAND”、“ARG”指的是容器啟動後,執行的命令及其引數。
下面我們啟動一個容器,並輸出“Hello World”:


上面我們輸入了“docker run centos echo "Hello World"”,docker檢測到目前本地倉庫沒有名為“centos”的映象,然後自動從我們之前建立連線的遠端倉庫中進行Pull操作(可以認為是從遠端下載至本地倉庫),然後載入為本地的容器(映象+可讀層),最終在該容器中執行了echo命令,列印了“Hello World”。而再次執行該命令時,就會直接列印,因為容器之前已經建立成功了,無需再次下載。
最後,我們的容器在執行完命令之後,就停止了。所以,這裡的容器只是執行單次命令的一個容器。

這裡一次啟動,執行一個命令的容器,是docker中最基本的容器執行方式。

(2)啟動互動式容器

啟動互動式容器依然使用run命令,只是需要新增一些引數,命令的格式如下:

docker run -i -t IMAGE /bin/bash

這裡在run命令後添加了“-i”和“-t”的引數,並在容器啟動時,執行“bash”命令。其中:
●-i --interactive=true|false
是指interactive,是用來告訴docker守護程序,為容器始終開啟標準輸入。其值為true或false,預設是false。

●-t --tty=true|false
是指tty,是用來告訴docker,要為建立的容器分配一個偽tty終端,這樣,新建立的容器,才能提供一個互動式的shell。其值為true或false,預設是false。

下面我們來演示一下,在啟動時新增“-i”和“-t”的引數,並使用base命令來啟動:

docker run -i -t centos /bin/bash


我們可以看到,輸入命令之後,命令列跳入了另一個shell互動平臺上,而這個互動平臺,就是作業系統為“centos”的容器的base互動介面。通過這個頁面,我們就可以於新建的容器進行互動,執行一些常用的命令,就像我們在使用虛擬機器一樣:

想要退出容器的話,使用“exit”命令來退出:

(3)檢視容器

如何檢視曾經建立過的容器呢?這就需要docker的“ps”命令:

docker ps [-a][-l]

其中“-a”是指列出所有的容器,而“-l”是指列出最新建立的容器。
我們來演示一下,這裡我們再建立一個debian作業系統的容器:

這樣我們本地就有兩個容器了,一個是centos系統的,一個是debian系統的。

我們直接使用“docker ps”來進行容器的檢視:

發現什麼也沒有,這是為什麼呢?這是因為我們之前新建的兩個容器在執行後已經停止了。而當不給ps指定任何引數時,docker的ps命令返回的是正在執行的docker容器。要檢視所有的容器,就需要使用“-a”引數:

我們可以看到,這裡列出來容器,就是最近我們執行過的容器。我們注意到,該列表給出了很豐富的資訊:
第一列【CONTAINER ID】,是一串數字和字母的組合,這是docker的守護程序在啟動容器時,為容器分配的唯一ID。而最後一列【NAMES】,也是docker守護程序為容器自動分配的名字。
如果我們需要檢視具體的容器資訊,可以使用inspect命令:
docker inspect 容器ID|容器NAME
這裡我們使用容器ID看一下之前的centos容器:

我們可以看到,inspect命令會對容器進行詳細的檢查,然後返回其配置資訊,包括“名稱”、“命令”、“網路配置”以及很多有幫助的資料。當然,每次使用ID檢視也很不方便,使用docker自定義的名字也挺記不清的,這裡docker提供了能夠自定義容器的命名方式:

docker run --name=自定義名 -i -t IMAGE /bin/bash

我們在執行run命令時,只需要在前面新增“--name”引數,進行自定義名稱的指定即可。例如下面我們使用name選項定義一個名字:

這裡我們定義了一個名為“pi_ka_qiu”(皮卡丘)的名字,然後檢視容器,就可以看到剛才新建的自定義名稱的容器:

這裡很多童鞋會有疑問,剛剛建立的所有容器都在執行命令後停止了,很多時候,我們執行一個命令並不需要重新建立一個容器,如果我們每次執行命令都要建立一個容器會很麻煩,尤其是在執行相同的命令時。
此時我們可以通過“重新啟動停止的容器”來解決該問題。

(4)重新啟動停止的容器

docker提供了一個重新啟動已經停止的容器的方式。使用start命令即可:

docker start [-i] 容器ID|容器NAME

下面我們重新啟動剛剛建立過,已經停止的容器:

可以重新啟動名為“pi_ka_qiu”的容器,並執行相關命令和退出shell控制檯。

(5)刪除停止的容器

除了重新啟動停止的容器外,我們也可以刪除停止的容器(不能刪除正在執行的容器):

docker rm 容器ID|容器NAME

我們刪除剛才建立的名為“pi_ka_qiu”的容器:

可以看到,執行完rm命令後,容器列表中就已經沒有了該容器。

(5)總結

本篇我們學習了docker的5個命令,分別是:
●docker run --name=自定義名 -i -t IMAGE /bin/bash
●docker ps -a -l
●docker inspect 容器ID|容器NAME
●docker start 容器ID|容器NAME
●docker rm 容器ID|容器NAME

下一篇我們繼續總結有關Docker守護式容器的相關知識。

轉載請註明出處:https://blog.csdn.net/acmman/article/details/83758482

參考資料:
《極客學院Docker學習》教學視訊