Das ECS-Plugin von Docker wurde veröffentlicht, und es scheint, dass es auch die stabile Version von Docker für Mac unterstützt, also habe ich es versucht.
Es gibt offizielle Dokumente und Kommentarseiten, aber es gab einige Stolpersteine (Ohne es zu wissen, wurde der Befehl docker ecs compose in Docker compose integriert ...) Ich habe es als persönliches Memo für ECS-Anfänger zusammengefasst.
Version 2 von AWS CLI ist erforderlich. Wir empfehlen, dass Sie Docker und AWS CLI auf die neueste Version aktualisieren.
Referenzlink: AWS CLI-Einstellungen Installieren, Aktualisieren und Deinstallieren von AWS CLI Version 2 unter macOS
Dieses Mal verwenden wir Docker Official Sample. Überprüfen Sie zunächst den Vorgang lokal. Es ist fast in Official Doc geschrieben, aber als persönliches Memo ist es ein offizielles Docker-Beispiel Ich werde die Vorgehensweise von erklären.
--Pull Docker offizielle Probe
$ git clone https://github.com/docker/ecs-plugin.git
$ cd ecs-plugin/example/
$ docker build app -t example
$ docker images --filter reference=example
REPOSITORY TAG IMAGE ID CREATED SIZE
example latest 33e46b7030e0 4 minutes ago 52.3MB
$ docker run -t -i -p 5000:5000 example
Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Versuchen Sie, auf http://0.0.0.0:5000/ zuzugreifen. Weil redis nicht läuft redis.exceptions.ConnectionError Sollte auftreten. Beenden Sie mit STRG + C.
Amazon ECR ist wie Docker Hub. Schieben Sie das erstellte Docker-Image auf ECR und ziehen Sie es, wenn Sie Docker-Compose verwenden.
python
$ docker context use default
$ docker context ls
Dadurch wird auch ein IAM-Benutzer gemäß [Official Doc] erstellt (https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html). .. Befolgen Sie die Schritte, um es mit dem Namen "Administrator" zu erstellen. Wenn Sie sich als der von Ihnen erstellte IAM-Benutzer anmelden, "Administrator @ aws_account_id" wird in der Navigationsleiste angezeigt. ex. Administrator@1234-5678-9012
Notieren Sie sich die Anmeldeinformationen, da Sie sie später verwenden werden. aws_account_id aws_access_key_id aws_secret_access_key
In meinem Fall benutze ich die Region Tokio (ap-nordöstlich-1). Geben Sie die in der Navigationsleiste bestätigte aws_account_id ohne Bindestriche in [aws_account_id] ein. ex. 1234-5678-9012 => 123456789012
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded
Nachdem Sie ein Bild an Amazon ECR gesendet haben, erstellen Sie ein Repository, in dem es gespeichert werden kann. Erstellen Sie ein Repository mit dem Namen example: latest und übertragen Sie das soeben erstellte Beispielbild.
--Erstellen Sie ein Repository
$ aws ecr create-repository \
--repository-name example \
--image-scanning-configuration scanOnPush=true \
--region ap-northeast-1
$ docker tag example:latest [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
--Drücken Sie das Bild
$ docker push [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
$ aws ecr list-images --repository-name example
Ziehen Sie das Bild auf ECR und überprüfen Sie den Betrieb lokal. Stellen Sie sicher, dass Sie das Bild an ERC senden können. Öffnen Sie die Amazon ECR-Konsole (https://console.aws.amazon.com/ecr/). Das Beispiel-Repository sollte erstellt worden sein.
Kopieren Sie die URL. Fügen Sie es in das Image von docker-compose.yml und docker-compose up ein. Kommentieren Sie x-aws-pull_credentials aus, da sie diesmal nicht benötigt werden.
example/docker-compose.yml
version: "3.8"
services:
frontend:
build: app
# x-aws-pull_credentials: <<<your arn for your secret you can get with docker ecs secret list>>>
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
ports:
- "5000:5000"
depends_on:
- backend
backend:
image: redis:alpine
$ docker-compose up
Sie können das auf ECR übertragene Bild ziehen, um den Betrieb der App lokal zu überprüfen.
Ich konnte den Betrieb von redis bestätigen.
$ docker-compose down
Erstellen Sie es gemäß Docker-Dokumente (Übersetzung) mit dem Namen myecscontext. Verwenden Sie die zuvor in IAM erstellten Anmeldeinformationen. aws_access_key_id aws_secret_access_key
$ docker context create ecs myecscontext
? Select AWS Profile new profile
? profile name myecscontext
? Region ap-northeast-1
? Enter credentials Yes
? AWS Access Key ID aws_access_key_id
? Enter AWS Secret Access Key aws_secret_access_key
Successfully created ecs context "myecscontext"
Überprüfen Sie den Kontext
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext ecs ap-northeast-1
Verwenden Sie myecscontext
$ docker context use myecscontext
this tool requires the "new ARN resource ID format"
Es sieht so aus, als müssten Sie das lange ARN-Format aktivieren. Ich denke, es ist Magie und führe es aus.
$ aws ecs put-account-setting-default --name awsvpcTrunking --value enabled
$ aws ecs put-account-setting-default --name containerInsights --value enabled
$ aws ecs put-account-setting-default --name containerInstanceLongArnFormat --value enabled
$ aws ecs put-account-setting-default --name serviceLongArnFormat --value enabled
$ aws ecs put-account-setting-default --name taskLongArnFormat --value enabled
Es ist endlich ECS, aber es ist sofort vorbei. Beim Erstellen des Dockers werden Ressourcen automatisch erstellt und bereitgestellt.
$ docker compose up
WARN[0000] services.build: unsupported attribute
[+] Running 17/17
⠿ example CREATE_COMPLETE 204.0s
⠿ ExampleLoadBalancer CREATE_COMPLETE 122.0s
⠿ FrontendTCP5000TargetGroup CREATE_COMPLETE 1.0s
⠿ CloudMap CREATE_COMPLETE 51.0s
⠿ FrontendTaskExecutionRole CREATE_COMPLETE 22.0s
⠿ LogGroup CREATE_COMPLETE 3.0s
⠿ ExampleDefaultNetwork CREATE_COMPLETE 8.0s
⠿ Cluster CREATE_COMPLETE 6.0s
⠿ BackendTaskExecutionRole CREATE_COMPLETE 21.0s
⠿ ExampleDefaultNetworkIngress CREATE_COMPLETE 1.0s
⠿ FrontendTaskDefinition CREATE_COMPLETE 3.0s
⠿ BackendTaskDefinition CREATE_COMPLETE 4.0s
⠿ FrontendServiceDiscoveryEntry CREATE_COMPLETE 3.0s
⠿ BackendServiceDiscoveryEntry CREATE_COMPLETE 1.9s
⠿ BackendService CREATE_COMPLETE 68.0s
⠿ FrontendTCP5000Listener CREATE_COMPLETE 1.0s
⠿ FrontendService CREATE_COMPLETE 68.0s
Überprüfen Sie den Status des laufenden Containers.
$ docker compose ps
ID NAME REPLICAS PORTS
example-BackendService-xSDWkSABSvEt backend 1/1
example-FrontendService-0pIz1giwUZg4 frontend 1/1 ExampleLoadBalancer-29dbd0f98418a861.elb.ap-northeast-1.amazonaws.com:5000->5000/tcp
Versuchen Sie, auf die Frontend-PORTS zuzugreifen. Ich denke, Sie haben die Beispiel-App bereitgestellt. http://ExampleLoadBalancer-29dbd0f98418a861.elb.ap-northeast-1.amazonaws.com:5000/
Wenn Sie Docker komponieren, wird die Ressource automatisch gelöscht.
$ docker compose down
[+] Running 17/17
⠿ example DELETE_COMPLETE 515.0s
⠿ ExampleLoadBalancer DELETE_COMPLETE 389.0s
⠿ FrontendTCP5000TargetGroup DELETE_COMPLETE 389.0s
⠿ CloudMap DELETE_COMPLETE 514.0s
⠿ FrontendTaskExecutionRole DELETE_COMPLETE 393.0s
⠿ LogGroup DELETE_COMPLETE 471.0s
⠿ ExampleDefaultNetwork DELETE_COMPLETE 467.0s
⠿ Cluster DELETE_COMPLETE 467.0s
⠿ BackendTaskExecutionRole DELETE_COMPLETE 472.0s
⠿ ExampleDefaultNetworkIngress DELETE_COMPLETE 3.0s
⠿ FrontendTaskDefinition DELETE_COMPLETE 390.0s
⠿ BackendTaskDefinition DELETE_COMPLETE 467.0s
⠿ FrontendServiceDiscoveryEntry DELETE_COMPLETE 389.0s
⠿ BackendServiceDiscoveryEntry DELETE_COMPLETE 467.0s
⠿ BackendService DELETE_COMPLETE 464.0s
⠿ FrontendTCP5000Listener DELETE_COMPLETE 388.0s
⠿ FrontendService DELETE_COMPLETE 386.0s
Offizielles Docker-Beispiel Bereitstellen von Docker Container auf ECS So starten Sie Amazon ECR mit AWS CLI So starten Sie Amazon ECS mit Fargate Der Docker-Befehl ecs wurde in Zusammenarbeit mit Docker und AWS entwickelt, daher habe ich versucht, ihn zu verwenden Ich habe versucht, Docker Compose von Amazon ECS bereitzustellen
Recommended Posts