git上的asp.net samples工程已经写好了docker file,内容是如下
?
//任何dockersfile都要以FORM开头,约定是用大写.
FROM microsoft/aspnet:1.0.0-rc1-update1
?
COPY . /app
WORKDIR /app
调用dnu的restore从nuget上获取最新的环境,由于asp.net core已经完全脱离GAC,所以每个项目相当于都要携带一整套的运行环境.而使用dnu的restore就是微软提供的回复整个运行环境的方法.前提是必须要联网别且可以访问nuget.
RUN ["dnu", "restore"]
?
开放5004,因为需要将改端口映射到主机上,docker的最佳做法是不要使用常规端口
EXPOSE 5004
ENTRYPOINT每个dockerfile只能有一个,作为环境启动时的进程,由于docker是单进程的,所以当制订了cmd或entrypoint后就只能运行着一个进城了.
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来进行改名,