Docker的使用初探(一) 常用指令說明

2022-06-21 11:18:08 字數 3783 閱讀 8884

目錄docker的安裝與簡單使用

前幾個星期實踐的了,再不記錄一下真的就忘乾淨了

docker即容器技術,具體的介紹已經有很多,不打算贅述了,說一些優點

對我個人來說,最大的優點就是在一台電腦上可以部署不同的環境而不用擔心它們產生衝突,最常見的衝突就是埠占用,使用docker技術可以很方便地規避這一問題,而且便於管理,我不用在本地處理多個環境

更廣泛一點好處還有很多

下文會看到,即使我在一台普通電腦上同時執行多個環境,也不會占用宿主機過多的資源,正常的開發仍然可以進行,更不用說專門的伺服器主機

傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而 docker 容器應用,由於直接執行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

開發過程中乙個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一致,導致有些 bug 並未在開發過程中被發現。而 docker 的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致性,從而不會再出現這段**在我機器上沒問題啊這類問題。

對開發和運維(devops)人員來說,最希望的就是一次建立或配置,可以在任意地方正常執行。

使用 docker 可以通過定製應用映象來實現持續整合、持續交付、部署。開發人員可以通過 dockerfile 來進行映象構建,並結合 持續整合(continuous integration) 系統進行整合測試,而運維人員則可以直接在生產環境中快速部署該映象,甚至結合 持續部署(continuous delivery/deployment) 系統進行自動部署。

由於 docker 確保了執行環境的一致性,使得應用的遷移更加容易。docker 可以在很多平台上執行,無論是物理機、虛擬機器、公有雲、私有雲,甚至是筆記本,其執行結果是一致的。因此使用者可以很輕易的將在乙個平台上執行的應用,遷移到另乙個平台上,而不用擔心執行環境的變化導致應用無法正常執行的情況。

docker 使用的分層儲存以及映象的技術,使得應用重複部分的復用更為容易,也使得應用的維護更新更加簡單,基於基礎映象進一步擴充套件映象也變得非常簡單。此外,docker 團隊同各個開源專案團隊一起維護了一大批高質量的 官方映象,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的映象製作成本。

基礎的東西就不說了,不同作業系統的安裝具體看這個

docker —— 從入門到實踐。我在文章裡主要記錄一些要點,以及在windows系統上的具體操作

和npm一樣,國內網路問題,拉去映象速度比較慢,所以要配置國內映象,可以使用docker官方的或者其他雲服務商提供的

安裝完docker之後再使用cmd命令開啟命令控制行中就可以使用docker命令了,目前我只做了一些簡單的實踐,記錄一下我使用頻率比較高的指令

1. docker ps -a

首先要檢視當前安裝使用了哪些容器

這個命令會列出所有容器的狀態,容器的id、名稱、使用的映象、對映位址等,我個人覺得是使用頻率最高的乙個

2. docker pull [name]

與npm類似,要想建立容器,需要先選擇映象拉取到本地,在docker hub找到需要的映象,或者自己製作好映象後,使用docker pull命令拉取到本地,以.net core的官方的示例映象為例

執行命令後等待拉取完成即可,再次拉取同一映象即更新

3. docker image ls

檢視本機的映象

拉取後檢視本地映象的狀態,會分別列出映象來自的倉庫(repository)、標籤(通常是版本號)、映象id、建立時間、映象大小

4. docker [image/container] rm [id/name]

刪除映象或容器,rm指令的用法對於容器和映象是相同的,主要不同的是就是映象沒有名稱

如果要通過名稱刪除映象,可以這樣docker image rm 《倉庫名》:《標籤》

如果要通過id刪除映象,可以輸入完整的id,也可以使用短id,短id就是只輸入id的前幾個字元,一般三個以上就可以區分不同的映象

需要注意的是,如果有依託於映象的子容器就不能刪除,並且容器正在執行時也不能刪除,但是可以加上-f引數,這樣docker會傳送sigkill訊號給容器

另外,所有的container指令可以省掉,docker rm [id/name]就是刪除指定容器

5. docker run

新建並啟動乙個容器,這個命令比較重要且常用的引數比較多,這裡用微軟官方映象給的命令作為示例

執行這個命令之後,docker首先會看有沒有相應的映象,如果沒有就會自動執行拉取操作,我們前面拉取了微軟官方的core應用映象,這裡則啟動乙個web示例映象,這樣會有乙個拉取的操作,需要等待一會

這樣就是建立成功並啟動了,訪問http://localhost:8000就可以看到core的示例**

如果去掉--rm引數,退出後不會刪除容器,通過下文的start命令可以再啟動,如果不使用引數則不會再進入終端

如果有問題可以用前面說的第乙個命令ps看下當前容器的狀態

6. docker start [id/name]

當我們重啟docker後,一般情況下容器會處於exited退出狀態,這個時候要通過start命令啟動,id前面說過,使用長id短id均可,名稱就是建立容器是--name引數設定的

這裡用上文已經關閉容器的例子

返回容器id一般就是啟動成功,這樣就可以繼續通過80埠訪問

7. docker exec

進入容器,還有另乙個指令docker attach兩者有些不一樣,這裡會在下文說明原因

docker exec後邊可以跟多個引數,這裡主要說明-i -t引數。

前面run命令也說過,這裡有些類似,只用-i引數時,由於沒有分配偽終端,介面沒有我們熟悉的linux命令提示符,但命令執行結果仍然可以返回。當-i -t引數一起使用時,則可以看到我們熟悉的 linux 命令提示符。

但是不知道是不是命令使用錯誤,只能在後面跟乙個ls這樣的簡單命令,如果用cd [目錄名稱]這種有空格的命令就無法識別,所以使用bash命令進入linux終端就可以正常使用linux命令了

下一節會講一講如何在docker上部署.net core,不再是官方的示例,而是如果從開發環境到部署的環境,本地如何通過dockerfile構建映象上傳到倉庫

Docker的使用初探(一) 常用指令說明

前幾個星期實踐的了,再不記錄一下真的就忘乾淨了 docker即容器技術,具體的介紹已經有很多,不打算贅述了,說一些優點 對我個人來說,最大的優點就是在一台電腦上可以部署不同的環境而不用擔心它們產生衝突,最常見的衝突就是埠占用,使用docker技術可以很方便地規避這一問題,而且便於管理,我不用在本地處...

docker學習筆記(一)初探docker

docker 可以簡單理解為一種容器,將開發完成的應用程式打包,在任意環境中部署執行,消除了不同物理環境中執行的差異。按照docker官方比喻,運輸貨物時,要用到多種不同的運輸工具,可能包括貨車 叉車 起重機 火車和輪船。這意味著這些工具必須能夠處理大小不 一 運輸需求各異的貨物 例如袋裝的咖啡 桶...

docker之Dokcerfile 常用指令

一 docker語法 docker語法 from 基礎映象base image run 執行命令 add 新增檔案 copy 拷貝檔案 cmd 執行命令 expose 執行命令 workdir 指定路徑 maintainer 維護者 env 設定環境變數 user 指定路徑 volume 邏輯卷掛載...