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.
Not
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
Şunları çalıştıran bir geliştirme bilgisayarı:
Üç veya daha fazla düğüme sahip bir Linux kümesi.
Azure Container Registry’deki bir kayıt defteri - Azure aboneliğinizde Kapsayıcı kayıt defteri oluşturun.
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.
Not
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.
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.
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.
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 IncludeDockerHealthStatusInSystemHealthReport true, 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.
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:
- Dizini mevcut uygulamanın kök dizinine değiştirin. Örneğin Yeoman tarafından oluşturulan uygulama
MyApplication
isecd ~/YeomanSamples/MyApplication
olacaktır. 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
- Service Fabric’te kapsayıcı çalıştırma hakkında daha fazla bilgi edinin.
- Kapsayıcı içinde .NET uygulaması dağıtma öğreticisini okuyun.
- Service Fabric uygulama yaşam döngüsü hakkında bilgi edinin.
- GitHub’da Service Fabric kapsayıcı kod örneklerine bakın.