我如何在Windows上对我的web api进行Docker化

时间:2017-07-23 22:54:44

标签: windows docker asp.net-web-api

Docker是一个用于创建容器化应用程序的完整开发平台,而Docker for Windows是在Windows系统上开始使用Docker的最佳方式。

  • 启动您最喜欢的shell(cmd.exe,PowerShell或其他)以检查您的docker和docker-compose版本,并验证安装。

    PS C:\Users\Docker> docker --version

  • Docker版本17.03.0-ce,build 60ccb22

    PS C:\Users\Docker> docker-compose --version

  • docker-compose版本1.11.2,build dfed245

1 个答案:

答案 0 :(得分:3)

您的问题并不是非常具体,但似乎您正试图将asp.net网络应用程序包含在内,以下是使用docker实现目标的基本线索。

Docker是一个Linux容器系统意味着它基于Linux内核,并且在windows中安装docker,你正在安装一个linux客户机来构建你的容器,你将自定义你的容器以转发将从内部为你的应用程序开发提供服务的端口容器到你的主机,所以基本上这将如何发生?在安装docker之后,第一个docker需要一个基本映像(linux映像)来运行你的容器,所以找到docker映像的好地方是docker hub,所以你需要的基本场景也是如此:

1)拉动图像。

2)根据此图片运行容器。

要完成数字1 :我们将以microsoft dotnet official docker hub为例。

docker pull microsoft/aspnetcore

docker pull:将从docker hub中提取dotnet:latest图像,:latest是一个标记,指定dotnet的最新稳定版本意味着如果你想要另一个运行时版本,你将使用docker pull dotnet:runtime来自上面的dotnet官方docker hub链接,你会在Supported tags

下找到标签

要完成 2号:我们需要使用此图片运行容器。

docker run -d -p 8000:80 --name firstwebapptest microsoft/aspnetcore

docker run:将基于firstwebapptest创建一个容器名称microsoft/aspnetcore,将容器端口80转发到主机端口8000,所有这些将作为分离运行模式-d

现在检查您的浏览器localhost:8000

这是使用docker命令行工具的一个非常基本的场景。 因此,实现此方案的另一种方法是使用 dockerfile ,您将在microsoft dotnet官方docker hub链接中找到How to use this image,它假定您已在您的app目录中包含已编译的myapp。 DLL。你要做的是在这个目录中创建一个名为dockerfile的文件,并将其写入:

FROM microsoft/aspnetcore
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "myapp.dll"]

FROM:我们已经拉过的基本图片

WORKDIR:这将是linux容器中的目录

COPY:. .第一个.正在复制容器内的主机目录内容,第二个.是您的来宾目录,在这种情况下将是/app

ENTREYPOINT:这个容器启动并运行后将运行的linux命令dotnet myapp.dll意味着您正在dotnet {{}} {{}} WORKDIR中运行命令/app {1}}包含您已复制的已编译myapp.dll.的所有主机目录应用结构COPY . .

所以现在我们有了dockerfile,我们需要的就是构建和运行它。

docker build -t secondwebapptest .
docker run -d -p 8001:80 secondwebapptest

docker build:将从-t secondwebapptest构建一个名为.的容器,该点指的是您刚刚构建的dockerfile,并且您已经在工作目录中,否则您必须指定一个路径使用-f的docker文件,但这不是我们的情况。

docker run:将基于将容器端口secondwebapptest转发到主机端口80来运行已创建名为8001的容器,并且所有这些将作为分离运行模式-d

现在检查您的浏览器localhost:8001