docker~從Dockerfile到Container的過程(終於算是OK了)

来源:http://www.cnblogs.com/lori/archive/2017/07/14/7169816.html
-Advertisement-
Play Games

上一文章,主要介紹Dockerfile里各參數的含義,以及在項目文件里這些內容的含義,因為大叔認為官方和網上其它文章說的有些模棱兩可,不太好讓大家理解,所有我又從新寫了一個大白話的文章,希望可以給大家一些幫助.<DotNetCore跨平臺~Dockerfile的解釋> 本文章主要對一個windows ...


上一文章,主要介紹Dockerfile里各參數的含義,以及在項目文件里這些內容的含義,因為大叔認為官方和網上其它文章說的有些模棱兩可,不太好讓大家理解,所有我又從新寫了一個大白話的文章,希望可以給大家一些幫助.<DotNetCore跨平臺~Dockerfile的解釋

本文章主要對一個windows下的dotnet new api生成的項目進行遷移,將它存儲為一個鏡像,然後運行這個鏡像,生成一個容器,容器對外開放5000埠,大家就可以通過5000來訪問它了,說起來很容易,做起來有些坑!

Docerfile和DotnetCore部署的過程

  1. 項目需要在windows里恢復,生成一下,dotnet restore和dotent publish
  2. 我們在docker里使用的是生成後的東西,比較如目錄是項目下的obj/docker/publish
  3. 你的Dockerfile與obj目錄是同一級的
  4. 使用docker build '加你的項目根目錄路徑"
  5. 使用docker run -it -p 5000:5000 imageId 運行起一個容器來,同時向外監聽了5000埠

做起來

1 通過dotnet new生成一個項目,路徑:C:\Users\lind\hellomvc

2 我們在docker里使用的是生成後的東西,比較如目錄是項目下的obj/docker/publish

3 你的Dockerfile與obj目錄是同一級的

Dockerfile的內容如下

#基於microsoft/dotnet 來構建我們的鏡像,它有800多兆,不是300多兆那個
FROM docker.io/microsoft/dotnet
MAINTAINER lind
#設置Docker容器對外暴露5000埠
EXPOSE 5000
#輸入參數
ARG source 
#將source所在目錄下的obj/docker/publish下的內容複製到容器根目錄的hellomvc目錄
COPY ${source:-obj/Docker/publish} ./hellomvc
#將容器當前目錄設為hellmvc
WORKDIR hellomvc
#在容器中運行dotnet這個命令
ENTRYPOINT ["dotnet","hellomvc.dll"]

4 使用docker build '加你的項目根目錄路徑"

這個命令是在linux平臺執行的,下麵看一下我們項目的路徑,可以使用xft,xshell等工具,方式操作,使用xft把整個項目都複製到linux下的/root/project目錄

在xshell中連接你的linux主機,輸入下麵的命令,生成一個新的鏡像

5 使用docker run -it -p 5000:5000 imageId 運行起一個容器來,同時向外監聽了5000埠

鏡像生成後,我們使用docker run 去啟動一個容器!

啟動後,它將監聽5000這個埠,IP地址就是linux主機的,我們在外面可以通過linux ip:5000來訪問它

如果你希望對外暴露8000埠,可以這樣寫docker run -it -p 8000:5000 7c8d43fe67f9,這樣,相同的網站被你在兩個容器中共同執行了,或者說一個網站多了一個"負載"的支持,看到這裡你是否想起什麼了,對就是負載均衡,你的環境部署更簡單了,一個項目可以在很短的時間被部署起來,再配上反射代理(nginx,lvs),一個網站負載就搭好了!

這個命令可以為你的鏡像重命名

docker tag 7c8d43fe67f9 helloapi:1.0

當然,如果你的阿裡雲有自己的鏡像,也可以把這個鏡像改名成阿裡雲的獎項,然後把這個本地的鏡像push到雲上,方便在其它伺服器上使用它

希望這篇文章可以幫助剛開始學docker的學生們,大家有問題可以直接與我聯繫!

docker是一種新的技術,它在未來將會再火一把!

一個鏡像,到處執行!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LINQ01 { class Program {... ...
  • 上一篇博客學習瞭如何簡單的使用多線程。其實普通的多線程確實很簡單,但是一個安全的高效的多線程卻不那麼簡單。所以很多時候不正確的使用多線程反倒會影響程式的性能。 下麵先看一個例子 : 執行結果: 從上面可以看出變數 num 的值不是連續遞增的,輸出也是沒有順序的,而且每次輸出的值都是不一樣的,這是因為 ...
  • using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApp1{ class Program { ...
  • HTTP模擬工具 開發語言:C#/Winform開發工具:Visual Studio 2017資料庫: SQLite使用框架:界面-MetroModernUI Http請求-RestSharp ORM-Dapper.Net Json解析-Newtonsoft.Json 多線程-SmartThread ...
  • Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加視圖 2017-3-4 7 分鐘閱讀時長 本文內容 1.Changing views and layout pages 修改視圖和佈局頁 2.Change the title a ...
  • 做好一個ASP.NET MVC網站,訪問速度非常慢,要幾秒到幾十秒不等的時間才能展現頁面.每隔幾十分鐘就會出現一次這樣的情況.下麵分享優化方法 開發環境是:VS2015 + IIS8+ SQL Server 部署環境是:Windows 2008 R2+ IIS7+ SQL Server 設置IIS回 ...
  • 如今無論是社交媒體平臺還是企業解決方案,Web services都不出不在。為了可以跨平臺使用,如何“暴露”你的APIs就顯得非常重要。當前,很多APIs錶面上聲稱是RESTful,但實際上它們是改進過後的RPC。 ...
  • 將別人開發的exe程式,放到自己的窗體裡面來運行。 1.基本功能實現 首先,在自己的窗體後面加上代碼: 然後在需要的地方,加上代碼: 即可: 【http://www.cnblogs.com/CUIT-DX037/】 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...