docker~從Dockerfile到Container的過程(終於算是OK了)
上一文章,主要介紹Dockerfile裡各引數的含義,以及在專案檔案裡這些內容的含義,因為大叔認為官方和網上其它文章說的有些模稜兩可,不太好讓大家理解,所有我又從新寫了一個大白話的文章,希望可以給大家一些幫助.<DotNetCore跨平臺~Dockerfile的解釋>
本文章主要對一個windows下的dotnet new api生成的專案進行遷移,將它儲存為一個映象,然後執行這個映象,生成一個容器,容器對外開放5000埠,大家就可以通過5000來訪問它了,說起來很容易,做起來有些坑!
Docerfile和DotnetCore部署的過程
- 專案需要在windows裡恢復,生成一下,dotnet restore和dotent publish
- 我們在docker裡使用的是生成後的東西,比較如目錄是專案下的obj/docker/publish
- 你的Dockerfile與obj目錄是同一級的
- 使用docker build '加你的專案根目錄路徑"
- 使用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為空,就使用當前目錄下的bin/Release/PublishOutput作為釋出目錄 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主機,輸入下面的命令,生成一個新的映象
如果希望為source輸入引數指定新的值,可以使用下面語句
#docker build "/root/project/coreMvc/" --build-arg source="/root/project/coreMvc/bin/Release/PublishOutput"
如果上面出現目錄未找到的問題,請像釋出目錄裝置為:obj\Docker\publish
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是一種新的技術,它在未來將會再火一把!
一個映象,到處執行!