1. 程式人生 > >.Net Core(完) 創建Docker鏡像

.Net Core(完) 創建Docker鏡像

停止 url runt 多個 顯示 cor nta 分享 qpi

使用Docker可以在操作系統上分出多個獨立的區域(容器/Container),各個容器之間基本隔離,且可以有自己單獨的系統配置、軟件等,各個容器之間的軟件基本不會互相幹擾。Docker上配置好的容器可以隨意移動到其它計算機中運行。
Docker可以很好得保證應用之間的互相隔離,同時Docker的進程跑在原生操作系統上,不會像虛擬機哪樣性能差。
Docker還能更好地滿足網站對於可伸縮性的要求,可以按需自動擴容,同時docker還具有“即拋”的特性,訪問高峰過去後也可以減少容器的數量。

一、安裝Docker
a)先了解一些基本概念:
鏡像(Image):類似於軟件安裝包;
容器(Container):鏡像安裝後運行的實例,同一個鏡像可以用於在一臺服務器上創建多個容器;
鏡像Layer:因為鏡像可以被pull,修改後push,所以對於一個鏡像的多次修改就會產生多個layer。
b)Docker的安裝包為docker.io,安裝完成後使用sudo docker version/info查看相關信息。

技術分享

c)用Docker來類比VirtualBox等虛擬機,那麽鏡像就相當於安裝盤,“虛擬機”安裝好了,下面加載安裝盤。docker的官網上有多種鏡像,busybox這個鏡像只有1m左右。執行sudo docker pull busybox可以獲取鏡像,sudo docker run -it busybox運行,也可以直接運行,docker會自動先獲取。使用linux的whoami和uname-a指令可以驗證docker是獨立的環境。busybox的詳細版本為Linux f3486b919f40 4.10.0-33-generic,也許跟Linus當年寫的第一個版本差不多吧。
c)將當前用戶加入docker的用戶組,可以免去在每個docker指令前加sudo的麻煩。

sudo groupadd docker #確認存在docker用戶組
sudo gpasswd -a zhixin docker #將當前用戶加入docker組
sudo service docker restart #重啟docker服務
最後註銷、重新登錄系統。


二、Docker常用命令
docker --help
docker run --help 使用類似的寫法查看子命令的幫助
exit 退出容器
docker run -it busybox 啟動busybox鏡像的新容器實例
docker run -it --name <name> busybox --name為容器指定名稱
docker ps 查看正在運行的容器,加-a顯示全部,-q只顯示容器ID,-f篩選,docker ps -a -f=ancestor=busybox 按照名稱篩選
docker rm <容器ID> 刪除容器,使用docker rm $(docker ps -q -a) 這樣的寫法可以刪除全部
docker start <容器ID> 啟動一個容器實例,後臺運行
docker stop <容器ID> 停止
docker run -d busybox 創建實例並後臺運行,但如果容器沒什麽操作,會自動停止,start不會停止
docker attach <容器ID> start容器後默認後臺運行,attach可以進入容器
docker images 列出所有鏡像
sudo docker rmi <鏡像ID> 刪除鏡像,刪除前需要先刪除該鏡像的容器

三、制作.Net Core鏡像


a)首先獲取microsoft/dotnet:runtime鏡像,這個鏡像只帶有core的運行時,比microsoft/dotnet小了一半。
b)創建並發布一個asp.net core項目,program.cs中添加.UseUrls("http://*:5000"),要在.Build()方法之前。
c)在發布目錄下創建Dockerfile,內容為:

FROM microsoft/dotnet:runtime
COPY . /publish #註意.和/之間有空格,表示把主機當前目錄內容拷貝到鏡像的/publish目錄
WORKDIR /publish #設定工作目錄
EXPOSE 5000/tcp #暴露 5000 端口
CMD ["dotnet","ForNginx.dll"]

d) 執行docker build -t zhixin/web1 . 來構建新的鏡像
e) 執行docker run -d -p:81:5000 zhixin/web1來啟動鏡像,並映射docker的5000端口到主機的81端口


學習資料:如鵬網.net提高班http://www.rupeng.com/News/10/4603.shtml

.Net Core(完) 創建Docker鏡像