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来进行更名,