什麼是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生成docker映象在我們生成乙個容器之前,我們必須先生成乙個容器的映象。我們先要定義乙個dockerfile檔案。在dockerfile中,我們需要定義生成映象過程中需要執行的命令。如下:cd dotnethelloworld
dotnet new mvc -n hellodotnet
cd hellodotnet
from microsoft/dotnet:latest //這裡是指定了當前映象的base映象,這個docker在生成映象的時候會根據該標示符(這裡的格式為username/repository:tag)去官方的映象倉庫中去找。具體的dockerfile編寫指導,以及dockerfile中可以使用的命令看這裡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後(將其放置於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 讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器...