git上的asp.net samples工程已經寫好了docker file,內容是以下 git
//任何dockersfile都要以FORM開頭,約定是用大寫. web
FROM microsoft/aspnet:1.0.0-rc1-update1 docker
COPY . /app json
WORKDIR /app api
調用dnu的restore從nuget上獲取最新的環境,因爲asp.net core已經徹底脫離GAC,因此每一個項目至關於都要攜帶一整套的運行環境.而使用dnu的restore就是微軟提供的回覆整個運行環境的方法.前提是必需要聯網別且能夠訪問nuget. 網絡
RUN ["dnu", "restore"] app
開放5004,由於須要將改端口映射到主機上,docker的最佳作法是不要使用常規端口 asp.net
EXPOSE 5004 ui
ENTRYPOINT每一個dockerfile只能有一個,做爲環境啓動時的進程,因爲docker是單進程的,因此當制訂了cmd或entrypoint後就只能運行着一個進城了. spa
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
nuget.config的feed地址最好換成v3的,否則會出現time out的狀況.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="NuGetorg" value="https://api.nuget.org/v3/index.json" />
<add key="AspNetRC1" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
搞定後docker images能夠看到新build的鏡像.接下來須要運行這個鏡像爲container
docker run是很是重要的命令,決定了不少東西.-d參數後臺運行.
若是在docker run 後面追加-d=true或者-d,則containter將會運行在後臺模式(Detached mode)。此時全部I/O數據只能經過網絡資源或者共享卷組來進行交互。由於container再也不監聽你執行docker run的這個終端命令行窗口。但你能夠經過執行docker attach 來從新掛載這個container裏面。須要注意的時, 若是你選擇執行-d使container進入後臺模式,那麼將沒法配合"--rm"參數。
只有第一次將image轉換爲container的時候才使用run,啓動一個現有的container要使用docker start .若是將image運行成container時候沒有制定--name參數,docker會生成一個隨機的名字,這是最好使用docker rename來進行更名,