在 Service Fabric 中托管 Windows 个来宾容器
Hosting Windows Guest Containers in Service Fabric
我无法将简单的容器部署到安装在 Windows 2016 Datacenter w/ Containers 上的开发集群上的单个节点。包已部署,但分区状态始终为 "In Build"。我在下面包含了应用程序和服务清单。
我可以使用以下命令手动远程进入机器和 运行 容器:
docker run --name nanoiis -d -it -p 80:80 nanoserver/iis.
当容器 运行ning 时,我可以从远程计算机访问其中的 IIS 运行ning 实例。由于已记录的 NAT 问题,我无法从主机使用 localhost 访问容器。
现在我需要在 Service Fabric 中获取容器 运行ning。我安装了 5.4.145.9494。我了解此版本的容器支持 运行time 处于预览状态,但这个简单的用例不应该起作用吗?
申请清单
<?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>
我无法将简单的容器部署到安装在 Windows 2016 Datacenter w/ Containers 上的开发集群上的单个节点。包已部署,但分区状态始终为 "In Build"。我在下面包含了应用程序和服务清单。
我可以使用以下命令手动远程进入机器和 运行 容器:
docker run --name nanoiis -d -it -p 80:80 nanoserver/iis.
当容器 运行ning 时,我可以从远程计算机访问其中的 IIS 运行ning 实例。由于已记录的 NAT 问题,我无法从主机使用 localhost 访问容器。
现在我需要在 Service Fabric 中获取容器 运行ning。我安装了 5.4.145.9494。我了解此版本的容器支持 运行time 处于预览状态,但这个简单的用例不应该起作用吗?
申请清单
<?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>