中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker容器使用實例分析

發布時間:2022-03-24 17:40:22 來源:億速云 閱讀:278 作者:iii 欄目:web開發

今天小編給大家分享一下Docker容器使用實例分析的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

docker與虛擬機

如果你正使用虛擬運行你的軟件,為什么還需要docker來取代呢?

它們之間的主要區別在于docker是一個在你的本機操作系統中運行的獨立進程,而虛擬機是一個完整的隔離操作系統,它在主機操作系統之上運行,需要更多時間來加載。所以docker比虛擬機有更多優勢,例如:

  • 加載速度與虛擬機不同,所需的硬件資源很少。

  • 在同一操作系統上同時運行多個docker容器。

  • 你可以修改容器并對其進行部署,或將docker文件定義提供給朋友,以便在同一環境中工作。

實際上,docker不是虛擬機的替代品,而是解決特定問題。

假設你的應用程序需要3個或更多在不同操作系統上運行的服務,那么你可以在同一主機上平穩運行3個容器,而不是在同一主機上運行3個虛擬機。聽起來很棒!

運行你的容器

在開始之前,請確保已正確安裝docker并準備好接受命令。在新的終端窗口中鍵入以下命令:

$ docker -v

以上命令輸出pc上安裝的docker版本:

docker version 17.12.0-ce-rc2, build f9cde63

是時候開始運行容器了:

$ docker container run alpine echo "hello world"

當您第一次運行上述命令時,你應該在終端窗口中看到與此類似的輸出:

Docker容器使用實例分析

這很容易,不是嗎?嘗試再次運行相同的命令:

$ docker container run alpine echo "hello world"

運行上述命令的第二,第三或第n次,你應該只在終端中看到此輸出:

hello world

現在你已成功運行容器,現在是時候分析究竟發生了什么。查看以下命令:

$ docker container run alpine echo "hello world"

該命令包含多個部分。首先,你有“docker”這個詞。這是docker命令行界面(cli)的名稱,用于與負責運行容器的docker引擎進行交互。

接下來,您有單詞“container”,它表示你正在使用的上下文。

再下一步是 實際要執行的命令run。

現在,還需要告訴docker運行哪個容器。在這里,運行的是 alpine 容器。

最后,需要定義在容器運行時,應在容器內執行的進程或任務類型。這是命令的最后一部分,echo "hello world"。

在容器內運行進程

既然已經了解了運行容器的命令的各個部分,請嘗試在另一個容器中運行不同的進程:
$ docker container run centos ping -c 5 127.0.0.1

輸出如下:

Docker容器使用實例分析

在前面的示例中,使用的容器鏡像是centos,并且在centos容器內執行的進程是ping -c 5 127.0.0.1,它將環回地址ping五次直到它停止。

第一行如下:

unable to find image 'centos:latest' locally

這告訴你docker沒有在系統的本地緩存中找到名為centos:latest的鏡像。因此,docker知道它必須從存儲容器的某個鏡像源中提。

默認情況下,docker環境配置為從hub.docker.com的docker hub中提取鏡像。這由第二行表示如下:

latest: pulling from library/centos

接下來的三行輸出如下:

85432449fd0f: pull completedigest: sha256:3b1a65e9a05...status:

這告訴您docker已成功從docker hub中提取了鏡像centos:latest。

后續的輸出都是由容器內運行的進程生成的,這里運行的是ping工具。

你可能還注意到latest這個關鍵字出現了幾次。每個映像都有一個版本(也稱為標記),如果沒有明確指定版本,則docker會自動其視為最新版本。

如果在系統上再次運行這個容器,將不會輸出之前的五行,因為docker將在本地緩存容器映像,因此不必先下載它。試試是不是這樣。

運行一個隨機引用容器

為了運行隨機語句容器,需要一個生成隨機語句的算法。可以在此處[1]找到生成這些隨機語句的api。
現在的目標是要在容器內運行一個進程,每5秒生成一條隨機語句,并且輸出到stdout:

Docker容器使用實例分析

按ctrl + c停止腳本。這是輸出:

Docker容器使用實例分析

每個響應都是一個json格式的字符串,包含引號,作者及其類別。
現在,讓這個容器后臺運行。為此,需要將前面的腳本縮成一行,并使用 /bin/sh -c “…” 來執行。docker 的表達式如下:

$ docker container run -d --name quotes alpine \  /bin/sh -c "while :; do wget -qo- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"

上面的表達式,你使用了兩個命令行參數,-d 和--name。-d告訴docker以一個linux守護進程的方式運行容器。-name參數用于為容器指定顯式名稱。

如果您未指定顯式容器名稱,docker將自動為容器分配一個隨機但唯一的名稱。這個名字將由一位著名科學家的名字和一個形容詞組成。

諸如,“boring_borg”或“angry_goldberg”。相當幽默,不是嗎?

一個重要的方面是容器名稱必須是唯一的。確保引號容器已啟動并正在運行:

$ docker container ls -l

前面輸出的重要部分是status列,此例中,它顯示up 16 seconds。這意味著容器已經啟動并運行了16秒。

列表容器

隨著時間的推移繼續運行容器,你的系統也許會產生很多容器。要查找主機上當前正在運行的容器,可以使用container ls命令,如下所示:

$ docker container ls

這將列出所有當前運行的容器。
默認情況下,docker輸出七列,含義如下:

Docker容器使用實例分析

如果要列出系統上定義的所有容器,可以使用命令行參數 -a 或 -all,如下所示:

$ docker container ls -a

這將列出任何狀態的容器,無論是創建,運行還是退出。

有時,可能只想列出所有容器的id。為此,你有 -q 參數:

$ docker container ls -q

你可能想知道這有什么用。這里有個例子:

$ docker container rm -f $(docker container ls -a -q)

上面的命令刪除當前在系統上定義的所有容器,包括已停止的容器。rm命令代表刪除,將在本教程中進一步解釋。
在上一節中,您在list命令中使用了-l參數。嘗試使用docker幫助找出-l參數代表什么。您可以為list命令調用help,如下所示:
$ docker container ls -h

停止和啟動容器

有時,你可能需要暫時停止正在運行的容器。試試以下這個容器:

$ docker container run -d --name quotes alpine \  /bin/sh -c "while :; do wget -qo- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"

現在,你可以使用以下命令停止此容器:

$ docker container stop quotes

當你嘗試暫停容器時,可能會注意到它需要一段時間(大約10秒)才能執行完成。為什么會這樣? docker將 linux sigterm信號發送到容器內運行的主進程。

在上面的命令中,容器的名稱用于指定要停止的容器。也可以使用容器id。

你如何獲得容器id?

有幾種方法可以做到這一點。手動方法是列出所有正在運行的容器,并在列表中找到您要查找的容器。只需從那里復制其id。
更自動化的方法是使用shell腳本和環境變量。例如,如果要獲取引號容器的id,這是一個示例:

$ export container_id = $(docker container ls | grep quotes | awk '{print $1}')

這里我們使用awk獲取第一個字段,即容器id。現在,您可以在表達式中使用$container_id變量,而不是使用容器名稱:

$ docker container stop $container_id

一旦停止容器后,其狀態將更改為“已退出”。

你可以使用docker container start命令重新啟動已停止的容器。

移除容器

運行docker container ls -a命令時,您可以看到很多處于“已退出”狀態的容器。

如果您不再需要這些容器,最好將它們從內存中刪除;否則,他們會占用寶貴的資源。刪除容器的命令如下:

$ docker container rm <container id>

或者,也可以使用此命令:

$ docker container rm <container name>

有時,無法刪除正在運行的容器;如果要強制刪除,可以使用命令行參數 -f 或 -force。
容器化改變了行業運行方式,將維護成本降低了50%以上,并將產品上市時間縮短了約90%。此外,相對于容器外運行,容器使應用程序更安全。

以上就是“Docker容器使用實例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰考县| 巴彦淖尔市| 南昌县| 康乐县| 饶阳县| 涞源县| 思茅市| 望城县| 尼木县| 庄河市| 贡觉县| 临城县| 微山县| 永福县| 贵州省| 辽阳县| 乳山市| 潍坊市| 通许县| 潜江市| 平和县| 聊城市| 如皋市| 铅山县| 无为县| 土默特右旗| 农安县| 泾阳县| 当雄县| 响水县| 道真| 上思县| 大田县| 文水县| 府谷县| 奉节县| 逊克县| 广南县| 姜堰市| 三台县| 军事|