在Service Fabric中托管Windows Guest容器

时间:2017-01-25 14:32:04

标签: azure-service-fabric

我无法将一个简单的容器部署到安装在Windows 2016 Datacenter w / Containers上的开发群集上的单个节点上。包部署但分区状态始终为"在Build"中。我已在下面列出了申请和服务清单。

我可以远程进入机器并使用以下命令手动运行容器:

docker run --name nanoiis -d -it -p 80:80 nanoserver/iis.

当容器运行时,我可以从远程计算机到达其中运行的IIS实例。由于记录的NAT问题,我无法使用来自主机的localhost到达容器。

现在我需要在Service Fabric中运行容器。我安装了5.4.145.9494。我理解这个版本的运行时的容器支持是预览的,但这个简单的用例不应该起作用吗?

应用程序清单

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest ApplicationTypeName="ContainerSampleType"
                   ApplicationTypeVersion="1.0.0"
                     xmlns="http://schemas.microsoft.com/2011/01/fabric"
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Parameters>
    <Parameter Name="IISContainer_InstanceCount" DefaultValue="1" />
  </Parameters>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="IISContainerPkg" ServiceManifestVersion="1.0.0" />
    <Policies>      
      <ContainerHostPolicies CodePackageRef="Code">        
        <PortBinding ContainerPort="80" EndpointRef="IISContainerTypeEndpoint"/>        
      </ContainerHostPolicies>
    </Policies>
  </ServiceManifestImport>
  <DefaultServices>
    <Service Name="IISContainer">
      <StatelessService ServiceTypeName="IISContainerType" InstanceCount="[IISContainer_InstanceCount]">
        <SingletonPartition />
      </StatelessService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

服务清单

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="IISContainerPkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <StatelessServiceType ServiceTypeName="IISContainerType" UseImplicitHost="true" />
  </ServiceTypes>
  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ContainerHost>
        <ImageName>nanoserver/iis:latest</ImageName>        
      </ContainerHost>
    </EntryPoint>
  </CodePackage>
  <ConfigPackage Name="Config" Version="1.0.0" />
  <Resources>
    <Endpoints>
      <Endpoint Name="IISContainerTypeEndpoint" UriScheme="http" Protocol="http" Port="80"/>
    </Endpoints>
  </Resources>
</ServiceManifest>

1 个答案:

答案 0 :(得分:1)

我认为你的问题来自于默认的MS图像没有明确暴露端口80这一事实.ASF确实需要这个(atm)

只需自己添加:

FROM nanoserver/iis
EXPOSE 80

将其推送到docker hub或您自己的注册表。

阅读博文here以获取在ASF上运行的简单IIS容器。 阅读帖子here进行问题排查。