1. ubuntu 18.04linux
2. docker version 18.09 web
3. netcore 2.1 docker
自從netcore支持跨平臺以後,以及如今不少公司都是採用容器化部署,今天在比較空閒的時候學習了一下。ubuntu
3.1 建立netcore 項目 ,選擇api程序完成建立api
3.2 添加dockerfilebash
項目右鍵=》添加=》docker支持,添加成功以後會生成一個dockerfile文件,打開該文件,系統自動生成了一堆代碼,可是在發佈的時候發現不可用,所以從網上找了下面這種方式進行發佈,把dockerfile屬性改成始終複製,發佈文件的時候直接把dockerfile文件也一塊發佈,以下圖配置的dockerfile文件:asp.net
FROM microsoft/dotnet:latest #所需依賴
WORKDIR /web #容器中系統工做空間
#拷貝當前文件夾下的文件到容器中系統的工做空間(注意:「.」後面有空格)
COPY . ./
EXPOSE 80 #對外提供的端口號
EXPOSE 443
#容器中使用 ["dotnet","系統啓動的dll"] 來運行應用程序
ENTRYPOINT ["dotnet", "testDocker.dll"]複製代碼
3.3 發佈學習
跟以往發佈net程序同樣選擇文件系統進行發佈:測試
3.4 安裝asp.net core鏡像ui
sudo docker pull microsoft/dotnet
複製代碼
由於咱們在dockerfile中要求的from鏡像是microsoft/aspnetcore:latest,因此下載的時候咱們直接pullmicrosoft/dotnet,若是下載慢的話 能夠配置國內鏡像站,這裏我用的阿里雲的鏡像
sudo vi /etc/apt/sources.list複製代碼
鏡像下載完成以後輸入sudo docker images 檢查一下是否下載成功,下圖中箭頭所指就是咱們下載的鏡像,到此須要準備工做已經完成。
sudo docker images複製代碼
3.5 把文件上傳到liunx指定文件夾當中
本人所用sudo rz 把文件上傳到liunx當中(若是您的linux系統沒有安裝,在終端輸入:
sudo apt-get install lrzsz 進行自動安裝),圖中所示,剛纔所發佈的文件,所有上傳到了liunx系統上的web文件夾當中
sudo apt-get install lrzsz
sudo rz複製代碼
3.6 build 鏡像
在build的時候注意,命令最後必定要有個".", 而且鏡像名稱也不容許出現大寫,若是想帶上版本號的話 能夠輸入命令:
sudo docker build -t web:v0.1 .複製代碼
,若是不輸入默認顯示tag的latest
build以後就能夠查看鏡像列表:sudo docker images,下圖中web 就是咱們剛纔所生成的鏡像文件:
sudo docker images複製代碼
3.7 運行build的鏡像
sudo docker run -d -t -p 5000:80 web #運行鏡像
sudo docker ps #查看正在運行的容器
sudo docker ps -a #查看全部容器信息複製代碼
複製代碼
3.8 測試可正常訪問
在整個發佈流程中涉及一些須要提早準備的例如docker環境,linux系統等還請自行配置。