Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Mevcut bir uygulamayı Service Fabric kümesindeki bir Linux kapsayıcısında ç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 adımları gösterilir. Kapsayıcılı uygulamanızı Azure Container Registry aracılığıyla da paylaşacaksınız. Bu makalede Docker'ın temel bir anlayışı varsayılmaktadır. Docker'a Genel Bakış'a bakarak Docker hakkında bilgi edinebilirsiniz.
Uyarı
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.
Önkoşullar
Çalışan bir geliştirme bilgisayarı:
Üç veya daha fazla düğüme sahip bir Linux kümesi.
Azure Container Registry'de kayıt defteri - Azure aboneliğinizde bir kapsayıcı kayıt defteri oluşturun .
Docker kapsayıcısını tanımlama
Docker Hub'da 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
komutuna girdi olarak kullanılır.
Boş bir dizin oluşturun ve Dockerfile dosyasını oluşturun (dosya uzantısı olmadan). Dockerfile'a aşağıdakileri 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şvuruyu okuyun.
Temel bir web uygulaması oluşturma
80 numaralı bağlantı noktasında dinleyen ve "Hello World!" döndüren bir Flask web uygulaması oluşturun. Aynı dizinde requirements.txtdosyasını oluşturun. Aşağıdakileri ekleyin ve değişikliklerinizi kaydedin:
Flask
Ayrıca app.py dosyasını 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.
Uyarı
Docker hatalarıyla sık sık anonim çekme isteklerinde karşılaşabilirsiniz. Bu hataları önlemek için ERROR: toomanyrequests: Too Many Requests.
veya You have reached your pull rate limit.
gibi hatalarla karşılaşmamak adına Docker Hub'da kimlik doğrulaması yapın. Daha fazla bilgi için bkz. Azure Container Registry ile genel içeriği yönetme .
Bir PowerShell penceresi açın ve Dockerfile dosyasını içeren dizine gidin. Ardından aşağıdaki komutları çalıştırın:
docker login
docker build -t helloworldapp .
Bu komut, Dockerfile dosyanızdaki yönergeleri kullanarak yeni görüntüyü oluşturur, görüntüyü helloworldapp
adlandırma (-t etiketleme) . Kapsayıcı görüntüsü oluşturmak için, temel görüntü ilk olarak uygulamanın eklendiği Docker Hub'dan indirilir.
Derleme komutu tamamlandıktan sonra yeni görüntüyle docker images
ilgili bilgileri görmek için 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ılı uygulamanızı kapsayıcı kayıt defterine göndermeden önce yerel olarak çalıştığını doğrulayın.
Bilgisayarınızın 4000 numaralı bağlantı noktasını kapsayıcının kullanıma sunulan 80 numaralı bağlantı noktasına eşleerek uygulamayı çalıştırın:
docker run -d -p 4000:80 --name my-web-site helloworldapp
name , çalışan kapsayıcıya (kapsayıcı kimliği yerine) bir ad verir.
Ç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!" ekranını görmeniz gerekir.
Kapsayıcınızı durdurmak için şunu ç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ü konteyner kayıt defterine gönder
Uygulamanın Docker'da çalıştığını doğruladıktan sonra görüntüyü Azure Container Registry'deki kayıt defterinize gönderin.
Kayıt bilgilerinizi kullanarak kapsayıcı kayıt defterinizde oturum açmak için docker login
komutunu çalıştırın.
Aşağıdaki örnek bir Microsoft Entra hizmet sorumlusunun kimliğini ve parolasını geçirir. Örneğin, 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, kayıt havuzunuzun tam yolunu içeren bir etiket veya takma ad olarak görüntüyü oluşturur. Bu örnek, kayıt defterinin kökünde dağınıklığı önlemek için görüntüyü samples
ad alanına yerleştirir.
docker tag helloworldapp myregistry.azurecr.io/samples/helloworldapp
Görseli container kayıt defterinize yükleyin.
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. SimpleContainerApp adlı tek bir Docker kapsayıcısıyla uygulama oluşturmak için Yeoman'ı kullanalım.
Service Fabric kapsayıcı uygulaması oluşturmak için bir terminal penceresi açın ve komutunu çalıştırın yo azuresfcontainer
.
Uygulamanızı adlandırın (örneğin, mycontainer
) ve uygulama hizmetini (örneğin, myservice
) adlandırın.
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 tanımlanmış bir iş yükü giriş noktası olduğundan, giriş komutlarını açıkça belirtmeniz gerekmez (komutlar kapsayıcının içinde çalıştırılır ve başlatma işleminden sonra kapsayıcı çalışır durumda kalır).
"1" örnek sayısını belirtin.
Bağlantı noktası eşlemesini uygun biçimde belirtin. Bu makale için 80:4000
'yi bağlantı noktası eşlemesi olarak sağlamanız 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.
Kapsayıcı deposu kimlik doğrulamasını yapılandırın
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ı Clear Containers 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
ve hyperv
şeklindedirdefault
. Varsayılan ayar işlem yalıtım modudur. Aşağıdaki kod parçacığı, yalıtım modunun uygulama bildirim dosyasında 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 idaresi yapılandırma
Kaynak idaresi , kapsayıcının konakta kullanabileceği kaynakları kısıtlar.
ResourceGovernancePolicy
Uygulama bildiriminde belirtilen öğesi, bir hizmet kodu paketi için kaynak sınırlarını bildirmek için kullanılır. Kaynak sınırları şu kaynaklar için ayarlanabilir: Memory, MemorySwap, CpuShares (CPU göreli ağırlığı), MemoryReservationInMB, BlkioWeight (BlockIO göreli ağırlığı). Bu örnekte Guest1Pkg hizmet paketi, yerleştirildiği küme düğümlerinde bir çekirdek alır. Bellek sınırları mutlaktır, bu nedenle kod paketi 1024 MB bellekle (ve aynı geçici garantili ayırmayla) sınırlıdır. Kod paketleri (kapsayıcılar veya işlemler) bu sınırdan daha fazla bellek ayıramaz ve bunu yapmaya çalışmak bellek yetersiz özel durumuyla sonuçlanıyor. Kaynak sınırı zorlamanın çalışması için, bir hizmet paketi içindeki tüm kod paketlerinin bellek sınırları belirtilmelidir.
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyServicePKg" ServiceManifestVersion="1.0.0" />
<Policies>
<ServicePackageResourceGovernancePolicy CpuCores="1"/>
<ResourceGovernancePolicy CodePackageRef="Code" MemoryInMB="1024" />
</Policies>
</ServiceManifestImport>
Docker HEALTHCHECK'i yapılandırma
v6.1'den itibaren Service Fabric, docker HEALTHCHECK olaylarını sistem durumu raporuyla otomatik olarak tümleştirir. Başka bir deyişle, kapsayıcınızda HEALTHCHECK etkinse, kapsayıcının Docker tarafından rapor edilen durumunun değişmesi durumunda Service Fabric durumu bildirecektir. health_statussağlıklı olduğunda, Service Fabric Explorer'da bir OK sağlık raporu görüntülenir ve health_statussağlıklı olmadığında bir UYARI görüntülenir.
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_statussağlıklı olduğunda bir TAMAM sağlık raporu görüntülenir ve health_statussağlıksız olduğunda ERROR görüntülenir.
Kapsayıcı durumunu izlemek için gerçekleştirilen gerçek denetime işaret eden HEALTHCHECK yönergesi, kapsayıcı görüntüsü oluşturulurken kullanılan Dockerfile içinde bulunmalıdır.
ApplicationManifest'te ContainerHostPolicies'in bir parçası olarak HealthConfig seçeneklerini belirterek her kapsayıcı için 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, RestartContainerOnUnhealthyDockerHealthStatusfalse ve TreatContainerUnhealthyStatusAsErrorfalse olarak ayarlanır.
RestartContainerOnUnhealthyDockerHealthStatustrue olarak ayarlanırsa, sürekli olarak iyi durumda olmadığını bildiren bir kapsayıcı yeniden başlatılır (büyük olasılıkla diğer düğümlerde).
TreatContainerUnhealthyStatusAsErrortrue olarak ayarlanırsa, kapsayıcının health_statusiyi durumda olmadığındaHATA durumu raporları görüntülenir.
Service Fabric kümesinin tamamı için HEALTHCHECK tümleştirmesini devre dışı bırakmak istiyorsanız EnableDockerHealthCheckIntegration değerini false olarak ayarlamanız gerekir.
Uygulamayı dağıt
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 adresinde Service Fabric Explorer'a gidin (Mac OS X'te http://localhost:19080/Explorer Vagrant kullanıyorsanız localhost değerini VM'nin özel IP'siyle değiştirin). Uygulamalar düğümünü genişletin ve artık uygulama türünüz için bir kayıt ve bu türün ilk örneği için başka bir kayıt olduğunu görün.
Ç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!" ekranını görmeniz gerekir.
Temizleme
Yerel geliştirme kümesinden uygulama örneğini silmek ve uygulama türünün kaydını kaldırmak 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
Eksiksiz örnek Service Fabric uygulama ve hizmet bildirimleri
Bu makalede kullanılan hizmet ve uygulama bildirimlerinin tamamı 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 oluşturulmuş bir uygulamaya başka bir kapsayıcı hizmeti eklemek için aşağıdaki adımları gerçekleştirin:
- Dizini mevcut uygulamanın kök dizinine değiştirin. Örneğin,
cd ~/YeomanSamples/MyApplication
,MyApplication
Yeoman tarafından oluşturulan uygulamaysa. -
yo azuresfcontainer:AddService
komutunu çalıştırın
Kapsayıcı zorla sonlandırılmadan önce zaman aralığını yapılandırma
Hizmet silme (veya başka bir düğüme taşınma) işlemi başladıktan sonra kapsayıcı kaldırılmadan önce çalışma süresinin beklemesi için bir zaman aralığı yapılandırabilirsiniz. Zaman aralığının yapılandırılması docker stop <time in seconds>
komutu kapsayıcıya gönderir. Daha fazla ayrıntı için bkz. docker stop. Beklenecek zaman aralığı bölümü altında Hosting
belirtilir. Aşağıdaki küme bildirim parçacığında bekleme aralığının nasıl ayarlanacağı gösterilmektedir:
{
"name": "Hosting",
"parameters": [
{
"name": "ContainerDeactivationTimeout",
"value" : "10"
},
...
]
}
Varsayılan zaman aralığı 10 saniye olarak ayarlanır. Bu yapılandırma dinamik olduğundan, yalnızca kümedeki bir yapılandırma yükseltmesi 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, düğümden kullanılmayan kapsayıcı görüntülerini kaldıracak şekilde yapılandırabilirsiniz." Bu yapılandırma, düğümde çok fazla kapsayıcı görüntüsü varsa disk alanının geri kazanılmasına olanak tanır. Bu özelliği etkinleştirmek için küme bildirimindeki bölümü aşağıdaki kod parçacığında gösterildiği gibi güncelleştirin Hosting
:
{
"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üler için, bunları parametresi altında ContainerImagesToSkip
belirtebilirsiniz.
Kapsayıcı görüntüsü indirme süresini yapılandırma
Service Fabric çalışma zamanı, kapsayıcı görüntülerinin indirilmesi ve ayıklanması için, ki bu kapsayıcı görüntülerinin çoğunda işe yarar, 20 dakika tahsis eder. Büyük görüntülerde veya ağ bağlantısı yavaş olduğunda, görüntü indirme ve ayıklamayı durdurmadan önce bekleme süresini artırmak gerekebilir. Bu 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 ayarlanır:
{
"name": "Hosting",
"parameters": [
{
"name": "ContainerImageDownloadTimeout",
"value": "1200"
}
]
}
Kapsayıcı tutma politikasını ayarla
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 korunur. 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 saklanan tüm konteynerler manuel olarak kaldırılmalıdır.
Docker daemon'ını özel bağımsız değişkenlerle başlatma
Service Fabric çalışma zamanının 6.2 sürümü ve üzeri ile Docker daemon'ını özel bağımsız değişkenlerle başlatabilirsiniz. Özel bağımsız değişkenler belirtildiğinde, Service Fabric, Docker Engine'e yalnızca --pidfile
bağımsız değişkenini geçirir ve başka hiçbir bağımsız değişken geçirmez. Bu nedenle, --pidfile
bağımsız değişken olarak geçirilmemelidir. Ayrıca, docker daemon'ın, Service Fabric'in daemon ile iletişim kurabilmesi için Windows'ta varsayılan ad kanalında veya Linux'ta unix etki alanı soketinde dinlemeye devam etmesi gerekir. Özel bağımsız değişkenler, ContainerServiceArguments altındaki Barındırma bölümünün altındaki küme bildiriminde belirtilir. Aşağıdaki kod parçacığında bir örnek gösterilmiştir:
{
"name": "Hosting",
"parameters": [
{
"name": "ContainerServiceArguments",
"value": "-H localhost:1234 -H unix:///var/run/docker.sock"
}
]
}
Sonraki adımlar
- Service Fabric'te kapsayıcılar çalıştırma hakkında daha fazla bilgi edinin.
- Kapsayıcıda .NET uygulaması dağıtma öğreticisini okuyun.
- Service Fabric uygulamasının yaşam döngüsü hakkında bilgi edinin.
- GitHub'da Service Fabric kapsayıcı kodu örneklerini gözden geçirin.