Aracılığıyla paylaş


Linux üzerinde ilk Service Fabric kapsayıcı uygulamanızı oluşturma

Bir Service Fabric kümesindeki Linux kapsayıcısında mevcut olan bir uygulamayı çalıştırmak için uygulamanızda herhangi bir değişiklik yapılması gerekmez. Bu makalede, Python Flask web uygulaması içeren bir Docker görüntüsü oluşturma ve bunu Service Fabric kümesine dağıtma işlemlerinde size yol gösterilir. Ayrıca, kapsayıcıya alınmış uygulamanızı Azure Container Registry aracılığıyla paylaşırsınız. Bu makale Docker hakkında temel bir anlayışınızın olduğunu varsayar. Docker’a Genel Bakış makalesini okuyarak Docker hakkında bilgi edinebilirsiniz.

Dekont

Bu makale Linux geliştirme ortamı için geçerlidir. Service Fabric küme çalışma zamanı ve Docker çalışma zamanı aynı işletim sisteminde çalışıyor olmalıdır. Linux kapsayıcılarını bir Windows kümesinde çalıştıramazsınız.

Ön koşullar

Docker kapsayıcısını tanımlama

Docker Hub’ında bulunan Python görüntüsünü temel alan bir görüntü oluşturun.

Docker kapsayıcınızı bir Dockerfile içinde belirtin. Dockerfile, kapsayıcınızın içindeki ortamı ayarlama, çalıştırmak istediğiniz uygulamayı yükleme ve bağlantı noktalarını eşleme yönergelerinden oluşur. Dockerfile, görüntüyü oluşturan docker build komutunun girdisidir.

Boş bir dizin oluşturun ve Dockerfile dosyasını oluşturun (dosya uzantısı kullanmayın). Aşağıdakini Dockerfile dosyasına ekleyin ve değişikliklerinizi kaydedin:

# Use an official Python runtime as a base image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt

# Make port 80 available outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

Daha fazla bilgi için Dockerfile başvurusunu okuyun.

Temel bir web uygulaması oluşturma

Bağlantı noktası 80 üzerinden dinleyen ve "Merhaba Dünya!" başlığını döndüren bir Flask web uygulaması oluşturun. Aynı dizinde, requirements.txt dosyasını oluşturun. Aşağıdakini dosyaya ekleyin ve değişikliklerinizi kaydedin:

Flask

Ayrıca, app.py dosyasını da oluşturun ve aşağıdaki kod parçacığını ekleyin:

from flask import Flask

app = Flask(__name__)


@app.route("/")
def hello():

    return 'Hello World!'


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Docker'da oturum açın ve görüntüyü oluşturun

Şimdi web uygulamanızı çalıştıran görüntüyü oluşturacağız. Docker'dan genel görüntüleri çekerken (Dockerfile'ımızda olduğu gibi python:2.7-slim ), anonim çekme isteğinde bulunmak yerine Docker Hub hesabınızla kimlik doğrulaması yapmak en iyi yöntemdir.

Dekont

Sık sık anonim çekme isteklerinde bulunurken, bu hataları önlemek için Docker Hub'a ERROR: toomanyrequests: Too Many Requests. benzer Docker hataları veya You have reached your pull rate limit. Docker Hub'da Kimlik Doğrulaması görebilirsiniz. Daha fazla bilgi için bkz . Azure Container Registry ile genel içeriği yönetme.

PowerShell penceresini açın ve Dockerfile dosyasını içeren dizine gidin. Sonra aşağıdaki komutları çalıştırın:

docker login
docker build -t helloworldapp .

Bu komut Dockerfile içindeki yönergeleri kullanarak yeni görüntüyü oluşturur ve helloworldapp olarak adlandırır (-t etiketi). Bir kapsayıcı görüntüsü oluşturmak için, önce temel görüntü uygulamanın eklendiği Docker Hub’ından indirilir.

Oluşturma komutu tamamlandıktan sonra, yeni görüntü üzerindeki bilgileri görmek için docker images komutunu çalıştırın:

$ docker images
    
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
helloworldapp                 latest              86838648aab6        2 minutes ago       194 MB

Uygulamayı yerel olarak çalıştırma

Kapsayıcıya alınmış uygulamanızı kapsayıcı kayıt defterine göndermeden önce uygulamanın yerel olarak çalıştığını doğrulayın.

Bilgisayarınızın 4000 numaralı bağlantı noktasını kapsayıcının ortaya konan 80 numaralı bağlantı noktasına eşleyerek uygulamayı çalıştırın:

docker run -d -p 4000:80 --name my-web-site helloworldapp

name, çalışan kapsayıcıya bir ad verir (kapsayıcı kimliği yerine).

Çalışan kapsayıcıya bağlanın. 4000 numaralı bağlantı noktasında döndürülen IP adresine işaret eden bir web tarayıcısı açın, örneğin "http://localhost:4000". Tarayıcıda "Merhaba Dünya!" başlığının görüntülendiğini görmeniz gerekir.

Hello World!

Kapsayıcınızı durdurmak için şu komutu çalıştırın:

docker stop my-web-site

Kapsayıcıyı geliştirme makinenizden silin:

docker rm my-web-site

Görüntüyü kapsayıcı kayıt defterine gönderme

Uygulamanın Docker'da çalıştığını doğruladıktan sonra, görüntüyü Azure Container Registry'de kayıt defterine gönderin.

Kayıt defteri kimlik bilgilerinizle kapsayıcı kayıt defterinizde oturum açmak için komutunu çalıştırındocker login.

Aşağıdaki örnek bir Microsoft Entra hizmet sorumlusunun kimliğini ve parolasını geçirir. Örneğin, bir otomasyon senaryosu için kayıt defterinize bir hizmet sorumlusu atamış olabilirsiniz. Alternatif olarak, kayıt defteri kullanıcı adınızı ve parolanızı kullanarak da oturum açabilirsiniz.

docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword

Aşağıdaki komut, görüntünün kayıt defterinize ait tam yolu içeren bir etiketini veya diğer adını oluşturur. Bu örnek, kayıt defterinin kökünde dağınıklığı önlemek için samples ad alanına görüntüyü yerleştirir.

docker tag helloworldapp myregistry.azurecr.io/samples/helloworldapp

Görüntüyü kapsayıcı kayıt defterinize gönderin:

docker push myregistry.azurecr.io/samples/helloworldapp

Docker görüntüsünü Yeoman ile paketleme

Linux için Service Fabric SDK’sı uygulamanızı oluşturmayı ve kapsayıcı görüntüsü eklemeyi kolaylaştıran bir Yeoman oluşturucu içerir. Şimdi Yeoman kullanarak SimpleContainerApp adlı tek bir Docker kapsayıcısı olan bir uygulama oluşturalım.

Service Fabric kapsayıcı uygulaması oluşturmak için, terminal penceresini açın ve yo azuresfcontainer komutunu çalıştırın.

Uygulamanıza (örneğin, mycontainer) ve uygulama hizmetine (örneğin, myservice) bir ad verin.

Görüntü adı için kapsayıcı kayıt defterindeki kapsayıcı görüntüsünün URL'sini sağlayın (örneğin: "myregistry.azurecr.io/samples/helloworldapp").

Bu görüntüde iş yükü giriş noktası tanımlanmış olduğundan, giriş komutlarının açıkça belirtilmesi gerekmez (komutlar kapsayıcının içinde çalıştırılır ve bu da başlatma sonrasında kapsayıcıyı çalışır durumda tutar).

"1" örnek sayısı belirtin.

Bağlantı noktası eşlemesini uygun biçimde belirtin. Bu makale için bağlantı noktası eşlemesi olarak sağlamanız 80:4000 gerekir. Bunu yaparak konak makinede 4000 numaralı bağlantı noktasına gelen tüm isteklerin kapsayıcıdaki 80 numaralı bağlantı noktasına yönlendirilmesini yapılandırmış olacaksınız.

Service Fabric Yeoman generator for containers

Kapsayıcı deposu kimlik doğrulamayı yapılandırma

Kapsayıcı görüntüsü indirme için farklı kimlik doğrulama türlerini yapılandırmayı öğrenmek için bkz . Kapsayıcı Deposu Kimlik Doğrulaması.

Yalıtım modunu yapılandırma

6.3 çalışma zamanı sürümüyle, Linux kapsayıcıları için VM yalıtımı desteklenir ve böylece kapsayıcılar için iki yalıtım modu desteklenir: işlem ve Hyper-V. Hyper-V yalıtım moduyla, çekirdekler her kapsayıcı ile kapsayıcı konağı arasında yalıtılır. Hyper-V yalıtımı, Kapsayıcıları Temizle kullanılarak uygulanır. Yalıtım modu, uygulama bildirim dosyasındaki ServicePackageContainerPolicy öğesindeki Linux kümeleri için belirtilir. Belirtilebilen yalıtım modları process, hyperv ve default modlarıdır. Varsayılan ayar işlem yalıtım modudur. Aşağıdaki kod parçacığı uygulama bildirimi dosyasında yalıtım modunun nasıl belirtildiğini gösterir.

<ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServicePkg" ServiceManifestVersion="1.0.0"/>
      <Policies>
        <ServicePackageContainerPolicy Hostname="votefront" Isolation="hyperv">
          <PortBinding ContainerPort="80" EndpointRef="myServiceTypeEndpoint"/>
        </ServicePackageContainerPolicy>
    </Policies>
  </ServiceManifestImport>

Kaynak idaresini yapılandırma

Kaynak idaresi kapsayıcının konakta kullanabildiği kaynakları kısıtlar. Uygulama bildiriminde belirtilen ResourceGovernancePolicy öğesi, hizmet kod paketinin kaynak sınırlarını tanımlamak için kullanılır. Şu kaynaklar için kaynak sınırları ayarlanabilir: Memory, MemorySwap, CpuShares (CPU göreli ağırlığı), MemoryReservationInMB, BlkioWeight (BlockIO göreli ağırlığı). Bu örnekte, Guest1Pkg hizmet paketi bulunduğu küme düğümlerinde bir çekirdek alır. Bellek sınırları mutlaktır; dolayısıyla, kod paketi 1024 MB bellekle (aynı genel garantili ayırmayla) sınırlıdır. Kod paketleri (kapsayıcılar veya işlemler) bu sınırı aşan miktarda bellek ayıramazlar ve bunu denediklerinde yetersiz bellek özel durumu ortaya çıkar. Kaynak sınırı zorlamasının çalışması için, hizmet paketi içindeki tüm kod paketlerinin bellek sınırlarının belirtilmiş olması gerekir.

<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="MyServicePKg" ServiceManifestVersion="1.0.0" />
  <Policies>
    <ServicePackageResourceGovernancePolicy CpuCores="1"/>
    <ResourceGovernancePolicy CodePackageRef="Code" MemoryInMB="1024"  />
  </Policies>
</ServiceManifestImport>

Docker HEALTHCHECK ayarlarını yapılandırma

Service Fabric, v6.1 sürümünden itibaren docker HEALTHCHECK olaylarını otomatik olarak sistem durumu raporuyla tümleştirir. Bu, kapsayıcınızda HEALTHCHECK özelliği etkinse kapsayıcının sistem durumuna ilişkin Docker tarafından bildirilen her değişiklik için Service Fabric’in durumu bildireceği anlamına gelir. health_status özelliği healthy olduğunda Service Fabric Explorer’da OK şeklinde bir durum raporu görüntülenirken, health_status özelliği unhealthy olduğunda WARNING görünür.

v6.4'ün en son yenileme sürümünden başlayarak, docker HEALTHCHECK değerlendirmelerinin hata olarak bildirilmesi gerektiğini belirtme seçeneğiniz vardır. Bu seçenek etkinleştirilirse, health_status iyi durumda olduğunda bir Tamam sistem durumu raporu ve health_status iyi durumda olmadığında ERROR görüntülenir.

Kapsayıcı durumunun izlenmesi için gerçekleştirilen gerçek denetimi gösteren HEALTHCHECK yönergesi, kapsayıcı görüntüsü oluşturulurken kullanılan Dockerfile dosyasında mevcut olmalıdır.

Screenshot shows details of the Deployed Service Package NodeServicePackage.

HealthCheckUnhealthyApp

HealthCheckUnhealthyDsp

ApplicationManifest dosyasındaki ContainerHostPolicies kapsamında HealthConfig seçeneklerini belirterek HEALTHCHECK davranışını yapılandırabilirsiniz.

<ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="ContainerServicePkg" ServiceManifestVersion="2.0.0" />
    <Policies>
      <ContainerHostPolicies CodePackageRef="Code">
        <HealthConfig IncludeDockerHealthStatusInSystemHealthReport="true"
		      RestartContainerOnUnhealthyDockerHealthStatus="false" 
		      TreatContainerUnhealthyStatusAsError="false" />
      </ContainerHostPolicies>
    </Policies>
</ServiceManifestImport>

Varsayılan olarak IncludeDockerHealthStatusInSystemHealthReporttrue, RestartContainerOnUnhealthyDockerHealthStatus false ve TreatContainerUnhealthyStatusAsError false olarak ayarlanır.

RestartContainerOnUnhealthyDockerHealthStatus özelliği true olarak ayarlanırsa, tekrarlanan şekilde durumunun iyi olmadığı bildirilen kapsayıcılar yeniden başlatılır (muhtemelen diğer düğümlerde).

TreatContainerUnhealthyStatusAsError true olarak ayarlanırsa, kapsayıcının health_status iyi durumda olmadığında HATA durumu raporları görüntülenir.

Tüm Service Fabric kümesi için HEALTHCHECK tümleştirmesini devre dışı bırakmak istiyorsanız EnableDockerHealthCheckIntegration özelliğini false olarak ayarlamanız gerekir.

Uygulamayı dağıtma

Uygulama oluşturulduktan sonra Service Fabric CLI kullanarak yerel kümeye dağıtabilirsiniz.

Yerel Service Fabric kümesine bağlanın.

sfctl cluster select --endpoint http://localhost:19080

'daki şablonlarda https://github.com/Azure-Samples/service-fabric-containers/ sağlanan yükleme betiğini kullanarak uygulama paketini kümenin görüntü deposuna kopyalayın, uygulama türünü kaydedin ve uygulamanın bir örneğini oluşturun.

./install.sh

Bir tarayıcı açın ve http://localhost:19080/Explorer adresindeki Service Fabric Explorer’a gidin (Mac OS X üzerinde Vagrant’ı kullanıyorsanız localhost ifadesini sanal makinenin özel IP’si ile değiştirin). Uygulamalar düğümünü genişletin ve şu anda uygulamanızın türü için bir giriş ve bu türün ilk örneği için başka bir giriş olduğuna dikkat edin.

Çalışan kapsayıcıya bağlanın. 4000 numaralı bağlantı noktasında döndürülen IP adresine işaret eden bir web tarayıcısı açın, örneğin "http://localhost:4000". Tarayıcıda "Merhaba Dünya!" başlığının görüntülendiğini görmeniz gerekir.

Hello World!

Temizleme

Yerel dağıtım kümesinden uygulama örneğini silmek ve uygulama türünün kaydını silmek için şablonda sağlanan kaldırma betiğini kullanın.

./uninstall.sh

Görüntüyü kapsayıcı kayıt defterine gönderdikten sonra yerel görüntüyü geliştirme bilgisayarınızdan silebilirsiniz:

docker rmi helloworldapp
docker rmi myregistry.azurecr.io/samples/helloworldapp

Tam Service Fabric uygulaması ve hizmet bildirimleri örneği

Bu makalede kullanılan tam hizmet ve uygulama bildirimleri aşağıda verilmiştir.

ServiceManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="myservicePkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="https://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <!-- This is the name of your ServiceType.
         The UseImplicitHost attribute indicates this is a guest service. -->
    <StatelessServiceType ServiceTypeName="myserviceType" UseImplicitHost="true" />
  </ServiceTypes>

  <!-- Code package is your service executable. -->
  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <!-- Follow this link for more information about deploying containers 
      to Service Fabric: https://aka.ms/sfguestcontainers -->
      <ContainerHost>
        <ImageName>myregistry.azurecr.io/samples/helloworldapp</ImageName>
        <!-- Pass comma delimited commands to your container: dotnet, myproc.dll, 5" -->
        <!--Commands> dotnet, myproc.dll, 5 </Commands-->
        <Commands></Commands>
      </ContainerHost>
    </EntryPoint>
    <!-- Pass environment variables to your container: -->
    
    <EnvironmentVariables>
      <!--
      <EnvironmentVariable Name="VariableName" Value="VariableValue"/>
      -->
    </EnvironmentVariables>
    
  </CodePackage>

  <Resources>
    <Endpoints>
      <!-- This endpoint is used by the communication listener to obtain the port on which to 
           listen. Please note that if your service is partitioned, this port is shared with 
           replicas of different partitions that are placed in your code. -->
      <Endpoint Name="myServiceTypeEndpoint" UriScheme="http" Port="4000" Protocol="http"/>
    </Endpoints>
  </Resources>
</ServiceManifest>

ApplicationManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest ApplicationTypeName="mycontainerType"
                     ApplicationTypeVersion="1.0.0"
                     xmlns="http://schemas.microsoft.com/2011/01/fabric"
                     xmlns:xsd="https://www.w3.org/2001/XMLSchema"
                     xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
  <!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion 
       should match the Name and Version attributes of the ServiceManifest element defined in the 
       ServiceManifest.xml file. -->
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="myservicePkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <Policies>
      <ContainerHostPolicies CodePackageRef="Code">
        <RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
        <PortBinding ContainerPort="80" EndpointRef="myServiceTypeEndpoint"/>
      </ContainerHostPolicies>
    </Policies>
  </ServiceManifestImport>
  <DefaultServices>
    <!-- The section below creates instances of service types, when an instance of this 
         application type is created. You can also create one or more instances of service type using the 
         ServiceFabric PowerShell module.
         
         The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
    <Service Name="myservice">
      <!-- On a local development cluster, set InstanceCount to 1. On a multi-node production 
      cluster, set InstanceCount to -1 for the container service to run on every node in 
      the cluster.
      -->
      <StatelessService ServiceTypeName="myserviceType" InstanceCount="1">
        <SingletonPartition />
      </StatelessService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

Mevcut bir uygulamaya daha fazla hizmet ekleme

Yeoman kullanılarak zaten oluşturulmuş bir uygulamaya başka bir kapsayıcı hizmeti eklemek için aşağıdaki adımları uygulayın:

  1. Dizini mevcut uygulamanın kök dizinine değiştirin. Örneğin Yeoman tarafından oluşturulan uygulama MyApplication ise cd ~/YeomanSamples/MyApplication olacaktır.
  2. yo azuresfcontainer:AddService komutunu çalıştırın

Kapsayıcı zorla sonlandırılmadan önceki zaman aralığını yapılandırın

Hizmet silme (veya başka bir düğüme taşıma) başladıktan sonra, çalışma zamanının kapsayıcı kaldırılmadan önce ne kadar bekleyeceğine ilişkin bir zaman aralığı yapılandırabilirsiniz. Zaman aralığını yapılandırma, kapsayıcıya docker stop <time in seconds> komutunu gönderir. Daha ayrıntılı bilgi için bkz. docker durdurma. Beklenecek zaman aralığı, Hosting bölümünde belirtilir. Aşağıdaki küme bildirimi kod parçacığı, bekleme aralığının nasıl ayarlandığını gösterir:

{
        "name": "Hosting",
        "parameters": [
          {
                "name": "ContainerDeactivationTimeout",
                "value" : "10"
          },
	      ...
        ]
}

Varsayılan zaman aralığı 10 saniye olarak ayarlanır. Bu yapılandırma dinamik olduğundan, kümedeki yalnızca yapılandırmaya yönelik bir güncelleştirme zaman aşımını güncelleştirir.

Kullanılmayan kapsayıcı görüntülerini kaldırmak için çalışma zamanını yapılandırma

Service Fabric kümesini kullanılmayan kapsayıcı görüntülerini düğümden kaldıracak şekilde yapılandırabilirsiniz. Bu yapılandırma, düğümde çok fazla kapsayıcı görüntüsü varsa yeniden disk alanı elde edilmesine imkan tanır. Bu özelliği etkinleştirmek için küme bildirimindeki Hosting bölümünü aşağıdaki kod parçacığında gösterildiği gibi güncelleştirin:

{
        "name": "Hosting",
        "parameters": [
          {
                "name": "PruneContainerImages",
                "value": "True"
          },
          {
                "name": "ContainerImagesToSkip",
                "value": "mcr.microsoft.com/windows/servercore|mcr.microsoft.com/windows/nanoserver|mcr.microsoft.com/dotnet/framework/aspnet|..."
          }
          ...
          }
        ]
} 

Silinmemesi gereken görüntüleri ContainerImagesToSkip parametresi altında belirtebilirsiniz.

Kapsayıcı görüntüsü indirme süresini yapılandırma

Service Fabric çalışma zaman, kapsayıcı görüntülerinin indirilip ayıklanması için 20 dakika ayırır ve bu süre çoğu kapsayıcı görüntüsü için yeterlidir. Görüntüler büyükse veya ağ bağlantısı yavaşsa görüntü indirme ve ayıklama işlemi iptal edilmeden önce beklenecek sürenin artırılması gerekebilir. Zaman aşımı, aşağıdaki kod parçacığında gösterildiği gibi küme bildiriminin Barındırma bölümündeki ContainerImageDownloadTimeout özniteliği kullanılarak ayarlanabilir:

{
        "name": "Hosting",
        "parameters": [
          {
              "name": "ContainerImageDownloadTimeout",
              "value": "1200"
          }
        ]
}

Kapsayıcı bekletme ilkesi ayarlama

Service Fabric (6.1 veya üzeri sürümler), kapsayıcı başlatma hatalarının tanılanmasına yardımcı olmak için sonlandırılan veya başlatılamayan kapsayıcıların bekletilmesini destekler. Bu ilke, aşağıdaki kod parçacığında gösterildiği gibi ApplicationManifest.xml dosyasında ayarlanabilir:

 <ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="process" ContainersRetentionCount="2"  RunInteractive="true"> 

ContainersRetentionCount ayarı, başarısız olduğunda bekletilecek kapsayıcı sayısını belirtir. Negatif bir değer belirtilirse başarısız olan tüm kapsayıcılar bekletilir. ContainersRetentionCount özniteliği belirtilmezse hiçbir kapsayıcı bekletilmez. ContainersRetentionCount özniteliği, kullanıcıların test ve üretim kümeleri için farklı değerler belirtebilmesi amacıyla Uygulama Parametrelerini destekler. Kapsayıcı hizmetinin diğer düğümlere taşınmasını önlemek için bu özellikler kullanılırken kapsayıcı hizmetinin belirli bir düğümü hedeflemesini sağlamak için yerleştirme kısıtlamaları kullanın. Bu özellik kullanılarak bekletilen tüm kapsayıcılar el ile kaldırılmalıdır.

Docker cinini özel bağımsız değişkenlerle başlatma

Service Fabric çalışma zamanı 6.2 sürümü ve üzeriyle, Docker cinini özel bağımsız değişkenler kullanarak başlatabilirsiniz. Özel bağımsız değişkenler belirtildiğinde, Service Fabric --pidfile bağımsız değişkeni hariç hiçbir bağımsız değişkeni Docker altyapısına geçirmez. Bu nedenle, --pidfile bir bağımsız değişken olarak geçirilmemelidir. Ayrıca, Service Fabric’in cin ile iletişim kurması için bağımsız değişken docker’ın Windows’da varsayılan ad kanalında (veya Linux’ta unix etki alanı yuvasında) dinlemeye devam etmesini sağlamalıdır. Özel bağımsız değişkenler, ContainerServiceArguments altındaki Barındırma bölümünde yer alan küme bildiriminde belirtilir. Aşağıdaki kod parçacığında bir örnek gösterilmektedir:

{ 
        "name": "Hosting", 
        "parameters": [ 
          { 
            "name": "ContainerServiceArguments", 
            "value": "-H localhost:1234 -H unix:///var/run/docker.sock" 
          } 
        ] 
} 

Sonraki adımlar