Docker技術初體驗

2022-04-04 12:51:16 字數 3591 閱讀 3414

什麼是docker

docker技術和虛擬機器技術類似,他們都能在乙個host系統中劃分出多個相互獨立隔離的執行環境。借助官方配圖:

虛擬機器的示意圖是這樣的

我們需要為每個虛擬機器安裝自己的作業系統,即使我們只是想在裡面執行乙個應用。然後需要去對每個作業系統進行管理。

再看看docker的示意圖:

docker也是在host系統中產生多個相互隔離的環境,但是他不需要為每個隔離環境安裝獨立的作業系統,而是多個容器通過docker engine來共享乙個host作業系統。我們可以將每個容器(應用執行依賴的runtime,各種依賴庫,應用**)生成為乙個映象,然後這個映象可以在其他機器的docker環境上執行。這樣部署應用的時候會非常方便,也方便對應用執行環境進行擴充套件提高吞吐量。

docker環境搭建(macos環境下)

docker version 17.03.0-ce, build 60ccb22
證明安裝成功了。

建立.netcore專案

接下來我們建立乙個.net core專案用於部署到docker 容器中。在terminal中執行如下命令(假設已安裝.netcoresdk):

mkdir dotnethelloworld

cd dotnethelloworld

dotnet new mvc -n hellodotnet

cd hellodotnet

生成docker映象在我們生成乙個容器之前,我們必須先生成乙個容器的映象。我們先要定義乙個dockerfile檔案。在dockerfile中,我們需要定義生成映象過程中需要執行的命令。如下:

from microsoft/dotnet:latest //這裡是指定了當前映象的base映象,這個docker在生成映象的時候會根據該標示符(這裡的格式為username/repository:tag)去官方的映象倉庫中去找。

run ["dotnet","restore"] //在容器中執行dotnet restore命令

run ["dotnet","build"] //在容器中執行dotnet build命令

expose 5000/tcp //暴露容器的5000網路埠給外界

env aspnetcore_urls http://*:5000 //設定環境變數來繫結asp.net core應用到5000埠

entrypoint ["dotnet","run"]//設定映象的入口為執行dotnet run命令

具體的dockerfile編寫指導,以及dockerfile中可以使用的命令看這裡

定義好dockerfile後(將其放置於hellodotnet目錄中),我們執行如下命令生成docker映象:(假設當前目錄為hellodotnet)

docker build -t hello-dot-net/v1 .

隨後會看到docker會執行我們在dockerfile中所定義的所有操作。

這表明我們的映象已經產生。

我們可以通過docker images來檢視我們的映象是否存在於列表中。

執行docker映象/shell互動

接下來我們可以通過如下命令執行我們的映象了

docker run -p 8081:5000 -t hello-dot-net/v1 //-p 8081:5000表示將host8081埠對映到容器的5000埠

執行成功後你會看到如下輸出

說明容器執行成功。接下來你可以通過docker ps命令檢視正在執行的容器.

也可以通過瀏覽器訪問localhost:8081來訪問部署才容器中的應用。你會看到如下頁面。

我們可以通過如下命令來在容器中執行bash命令來獲取shell控制:

docker exec -i -t hello-dot-net/v1 /bin/bash

獲得如下輸出

接下來便可以通過shell與容器互動了。可以先執行個ls命令看看。

Docker的初體驗

這幾天搗鼓了一下docker,是真的麻煩啊,網上資料比較雜亂,也很多英文,學起來挺多問題的 在控制面板 程式 啟用或關閉windows功能,在彈出框中勾選hyper v,會需要重啟啟用,這貌似是乙個虛擬機器功能 docker toolbox,這是乙個帶虛擬機器,docker之類的整合工具包 win1...

docker安裝mongo初體驗

8 到此啟動好了mongo,但是我怎麼進入mongo呢?故此,需要進入容器,命令如下 docker exec it 容器id bin bash 進入容器 9 進入之後,可以通過如下命令依次建立使用者和庫 mongo use admin db.createuser 建立使用者,此使用者建立成功,則後續...

Docker初體驗(php開發環境)

一 什麼是docker?docker是乙個開源的引擎,可以輕鬆的為任何應用建立乙個輕量級的 可移植的 自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境 測試環境 預發布環境 中部署。二 為什麼要用docker?docker 讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器...