1. 程式人生 > >Windows下docker的安裝,將ASP.NET Core程序部署在Linux和Docker中

Windows下docker的安裝,將ASP.NET Core程序部署在Linux和Docker中

第一次 p地址 web程序 基礎 執行文件 docker安裝 ima rfi 如果

原文:Windows下docker的安裝,將ASP.NET Core程序部署在Linux和Docker中

參考文章:
https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html
docker for windows下載連接: https://docs.docker.com/docker-for-windows/install/

關於配置的細節以及docker的下載安裝等操作,並不復雜,網上大部分文章的教程都是靠譜的。
本文主要把各方面配置中需要註意的點說一下

第一步:安裝docker for windows

如果你是windows系統,需要執行這一步
安裝之前需要開啟 Hyper-V

虛擬機功能,啟用方式可以自己搜索
Hyper-V 啟動之後,需要到bios界面啟用cpu的虛擬化。
https://jingyan.baidu.com/article/15622f24017461fdfdbea554.html
直到任務管理器中的虛擬化顯示開啟表示成功
技術分享圖片

第二步:創建一個webapi程序

創建一個.net core 2.0的web程序,然後將程序發布

可以直接在vs裏面右鍵發布,選擇發布到文件,這種方式發布的項目只適用於windows平臺運行,其他平臺就不行了
技術分享圖片
技術分享圖片

想要項目在linux、osx系統上運行,需要用命令發布,也可能有別的方式,暫時只知道這一種:
1.dos命令轉到項目的主目錄下
2.運行命令:dotnet publish --runtime ubuntu.16.04-x64

--runtime後面跟的是運行時環境的操作系統
3.如果上面的命令成功了,你會看到生成了這樣一個文件夾:bin\Debug\netcoreapp2.0\ubuntu.16.04-x64\publish,這裏面的文件就是發布好的項目文件了,我們將publish文件夾拷貝到對應的操作系統下,運行命令dotnet NetCore.dllNetCore.dll指的是主程序文件),不出意外的話項目就可以正常啟動了,如果出意外的話,請進行以下檢查:

發布時輸入的目標系統是否正確
服務器是否正確安裝了.net sdk
代碼是否有bug
         

第三步:創建Dockerfile文件

在發布目錄下創建一個文本文檔Dockerfile.txt ,或者在Linux系統創建一個文件Dockerfile
內容:

# 聲明使用的基礎鏡像
FROM microsoft/aspnetcore:latest 
# 設置工作目錄
WORKDIR /app
# 將本地應用拷貝到 容器 /app/ 目錄下 "./"代表的就是/app 因為dockerfile文件和程序文件都在發布文件夾下 所以兩個目錄是一樣的
COPY ./ ./
# 設置導出端口
EXPOSE 5000/tcp
# 指定應用入口點 NetCore.dll代表的是主程序文件
ENTRYPOINT ["dotnet", "NetCore.dll"]

編輯完成之後記得將文件的後綴名去掉

第四部:創建鏡像

在執行這一步之前,請確保docker已經成功安裝在你的操作系統中

然後進入命令界面 ,cd切換到發布文件夾下

執行命令:
docker build -t myapi . (註意命令中的最後一個點 代表的是命令從你的當前目錄下執行)

或者:

docker build 發布文件目錄 -t myapi

myapi為自定義的鏡像名稱

不出意外的話鏡像創建完畢
技術分享圖片

然後繼續執行命令運行:
docker run -it -p 5000:5000 myapi

這裏的5000:5000 代表把容器內的5000端口映射到你主機的5000端口
然後 http://localhost:5000 就可以訪問啦!
技術分享圖片

鏡像相關的命令

sudo docker pull microsoft/dotnet    //從docker倉庫拉取一個名稱為“microsoft/dotnet”的鏡像

sudo docker build light    //構建一個名稱為light的容器

sudo docker run hello-world    //運行hello-world容器

sudo docker images    //查看所有鏡像

sudo docker rmi [IMAE_ID]    //刪除一個imageid的鏡像

sudo docker rmi $(docker images -q)    //刪除所有鏡像

sudo docker ps -a    //查看所有容器運行狀態

sudo docker rm 6f0c67de4b72    //刪除一個containerid的容器(實例)

sudo docker rm $(sudo docker ps -a -q)   //刪除所有容器

在VS中啟用docker支持

vs2017中提供了對docker的支持,在新建web項目中可以勾選啟動docker支持,選項,或者在項目中右鍵添加docker的支持
技術分享圖片
同時會生成幾個新的文件,
技術分享圖片

xx.override.yml文件中 將 ports端口改成我們程序的端口
程序中的端口一定要和上面的端口一樣:
技術分享圖片
技術分享圖片

build.yml文件中,將image 版本改為 2.0
技術分享圖片

將項目目錄下自動生成的Dockerfile文件中的EXPOSE也改為5003端口
啟動docker for windows
然後點擊Docker運行docker-compose
漫長的等待。。。 期間會下載需要的包以及執行鏡像的創建發布命令等。
技術分享圖片
技術分享圖片
技術分享圖片
成功運行,系統會用一個默認的本機端口映射到docker的5003端口上,api可以訪問啦!
技術分享圖片

關於鏡像的下載速度

官方鏡像地址的下載速度太慢
建議配置一個代理地址:https://www.daocloud.io/mirror#accelerator-doc
再也不用擔心下載速度了^-^

Linux相關命令及docker配置

第一次接觸linux,很蒙圈,這裏記錄一下基礎的命令,及docker需要用到的一些配置,以便以後查閱

Linux命令

  • 查看目錄: ls
  • 創建目錄: mkdir (目錄名)
  • 刪除文件:rm (文件或目錄名)
  • 刪除目錄(包括其中的子目錄和文件):rm -rf (文件或目錄名)
  • 切換到root 用戶: sudo -i 或sudo su -
  • 退出root 用戶: exit
  • 顯示當前目錄: pwd
  • 復制文件/目錄:cp 源文件或目錄/目標文件或目 cp -r 復制文件夾 包括子目錄和文件
  • 重命名文件/目錄: mv (文件或目錄名)
  • 進入目錄:cd

文件權限設置:
chmod 777 home1 777是讀、寫、執行權限

Rar文件解壓/解壓

安裝: sudo apt-get install rar unrar

或者可從http://www.rarsoft.com/download.htm下載 RAR for Linux 編譯安裝

# tar -xzpvf rarlinux-3.8.0.tar.gz
# cd rar
# make

這樣就安裝好了,安裝之後就有了rar和unrar這兩個程序,rar是壓縮程序,unrar是解壓程序。它們的參數選項很多,可用命令rar -help和unrar -help查看,這裏亦簡單舉例說明一下其用法:

# rar a test.rar test.jpg test.png 這條命令是將test.jpg和test.png壓縮成一個rar包
# rar a test.rar *.jpg 這條命令是將所有.jpg的文件壓縮成一個rar包
# rar a test.rar test 這條命令是將文件夾test壓縮成一個rar包
# unrar e test.rar 這條命令是將test.rar中的所有文件解壓出來

編輯文件 :

需要用管理員賬戶編輯

打開或新建文件,並將光標至於第一行首:vi /dic1/a.txt ( 按鍵盤上“a”鍵,vi界面出現 INSERT後,開始進行編輯操作)

編輯完畢後,按ESC鍵,跳到命令模式,然後進行保存退出或不保存退出操作:

  • 保存,不退出 :w
  • 強制保存,不退出 :w!
  • 保存,並退出: :wq
  • 不保存,並退出: :q

文件上傳

putty下載地址:https://www.putty.org/

切換到PuTTY執行文件下改文件夾中需要同時包括pscp.exe:

  執行命令:pscp 文件路徑 登陸用戶名@服務器ip地址:/文件夾名稱

  例:pscp C:\Program Files\PuTTY\PublishOutput.rar [email protected]:/home1
    

圖形界面管理工具

xshell:https://www.netsarang.com/download/main.html

Docker安裝及設置

Docker代理設置

轉到docker目錄下:
創建目錄/etc/systemd/system/docker.service.d

在該目錄下創建文件:http-proxy.conf

文件中添加配置:

Environment="HTTP_PROXY=https://mirror.ccs.tencentyun.com"

保存文件

保存完了之後提示重新啟動docker,然後提示要執行什麽命令來著,手速太快,命令忘記了。。。根據提示復制粘貼就可以了

Windows下docker的安裝,將ASP.NET Core程序部署在Linux和Docker中