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

回到目錄html

上一文章,主要介紹Dockerfile裏各參數的含義,以及在項目文件裏這些內容的含義,由於大叔認爲官方和網上其它文章說的有些模棱兩可,不太好讓你們理解,全部我又重新寫了一個大白話的文章,但願能夠給你們一些幫助.<DotNetCore跨平臺~Dockerfile的解釋linux

本文章主要對一個windows下的dotnet new api生成的項目進行遷移,將它存儲爲一個鏡像,而後運行這個鏡像,生成一個容器,容器對外開放5000端口,你們就能夠經過5000來訪問它了,提及來很容易,作起來有些坑!nginx

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\hellomvcdocker

2 咱們在docker裏使用的是生成後的東西,比較如目錄是項目下的obj/docker/publishshell

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

Dockerfile的內容以下api

#基於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目錄mvc

在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是一種新的技術,它在將來將會再火一把!

一個鏡像,處處執行!

 回到目錄

相關文章
相關標籤/搜索