Zero To One
context requires credentials to be passed as environment variables 해결법 본문
context requires credentials to be passed as environment variables 해결법
Zero_To_One 2022. 3. 22. 11:42Ubuntu20.04LTS
> sudo docker context create ecs myecscontext
context requires credentials to be passed as environment variables
해결
1. 다음과 같이 실행 (우분투라도 sudo는 빼고 실행해야됩니다. 이유는 맨 밑에 ADD 부분에 있습니다)
$ docker context create ecs myecscontext
? Create a Docker context using: AWS environment variables
Successfully created ecs context "myecscontext"
$ docker context use myecscontext
myecscontext
$ docker context ls
context requires credentials to be passed as environment variables
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy 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 credentials read from environment
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context use default
default
$ 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 credentials read from environment
$ docker context rm myecscontext
myecscontext
2. "docker context create" requires exactly 1 argument. 에러일시, 아래의 코드 실행.
curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh
https://docs.docker.com/cloud/ecs-integration/#install-the-docker-compose-cli-on-linux
Deploying Docker containers on ECS
docs.docker.com
3. 우분투 유저라면 sudo를 빼고 다음을 실행.
docker context create ecs myecscontext
4. 그래도 안된다면 다음을 실행
. ~/.zshrc
docker context create ecs myecscontext
5. 결과
> 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 credentials read from environment
6. 그러나 환경설정이 필요하다.
$ export AWS_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2
발급받은 key_id와 secret_access_key, region을 입력한다.
7. 차례대로 입력
docker context use default
docker context rm myecscontext
docker context create ecs myecscontext --from-env
docker context use myecscontext
8. 결과
~ > 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 credentials read from environment
> docker compose up
WARNING services.build: unsupported attribute
WARNING services.build: unsupported attribute
[+] Running 21/21
⠿ sprint-docker-compose CreateComplete 291.9s
⠿ DefaultNetwork CreateComplete 5.0s
⠿ FrontendTaskExecutionRole CreateComplete 27.0s
⠿ Cluster CreateComplete 7.4s
⠿ BackendTaskExecutionRole CreateComplete 27.0s
⠿ CloudMap CreateComplete 47.0s
⠿ Backend3333TargetGroup CreateComplete 1.1s
⠿ Frontend80TargetGroup CreateComplete 1.1s
⠿ LogGroup CreateComplete 2.0s
⠿ Default80Ingress CreateComplete 0.7s
⠿ DefaultNetworkIngress CreateComplete 0.7s
⠿ LoadBalancer CreateComplete 91.8s
⠿ Default3333Ingress CreateComplete 0.7s
⠿ BackendTaskDefinition CreateComplete 3.0s
⠿ FrontendTaskDefinition CreateComplete 3.0s
⠿ BackendServiceDiscoveryEntry CreateComplete 2.0s
⠿ FrontendServiceDiscoveryEntry CreateComplete 2.0s
⠿ Backend3333Listener CreateComplete 1.6s
⠿ Frontend80Listener CreateComplete 3.1s
⠿ BackendService CreateComplete 100.9s
⠿ FrontendService CreateComplete
+++++++++++++++++++++++++++++++++++++++수정+++++++++++++++++++++++++++++++++++++++++++++++++++
6번을 하는 대신, myecscontext를 생성할 때,
AWS secret and token credentials를 선택해서 차례대로 입력해 주면 된다.
(region을 서울로 선택해도 버지니아북부로 생성된다...)
----------------------------------------------------------------------------------------------------------------------------------------------------------
docker compose up
docker compose up을 실행한 다음 docker compose down을 꼭 실행시켜 주자.
> docker compose down
[+] Running 21/21
⠿ sprint-docker-compose DeleteComplete 494.0s
⠿ FrontendService DeleteComplete 387.0s
⠿ DefaultNetworkIngress DeleteComplete 0.0s
⠿ Default3333Ingress DeleteComplete 0.0s
⠿ Default80Ingress DeleteComplete 1.0s
⠿ FrontendTaskDefinition DeleteComplete 2.0s
⠿ FrontendServiceDiscoveryEntry DeleteComplete 1.0s
⠿ BackendService DeleteComplete 55.0s
⠿ Frontend80Listener DeleteComplete 2.0s
⠿ FrontendTaskExecutionRole DeleteComplete 2.0s
⠿ Frontend80TargetGroup DeleteComplete 0.0s
⠿ BackendServiceDiscoveryEntry DeleteComplete 2.0s
⠿ Backend3333Listener DeleteComplete 2.0s
⠿ Cluster DeleteComplete 2.0s
⠿ BackendTaskDefinition DeleteComplete 1.0s
⠿ CloudMap DeleteComplete 46.1s
⠿ LoadBalancer DeleteComplete 1.0s
⠿ Backend3333TargetGroup DeleteComplete 1.0s
⠿ LogGroup DeleteComplete 2.0s
⠿ BackendTaskExecutionRole DeleteComplete 3.1s
⠿ DefaultNetwork DeleteComplete 34.1s
++++++++++++++++++++++++++++++++++++ADD+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docker context ~ 와 sudo docker context ~는 다릅니다.
만약 create를 시도해도 나타나지 않는다면, sudo 명령어로 만들었기 때문입니다.
해결해 볼 수 있는 방법은 다음과 같습니다.
sudo AWS_ACCESS_KEY=<key> AWS_SECRECT_KEY=<key> docker context ls
sudo를 맨앞으로 빼서 ACCESS_KEY값과 SECRECT_KEY값을 차례대로 넣은다음 docker 명령어를 실행시키면 됩니다.
참조
docker context create ecs myecs - requires exactly one argument
I'm trying to create a Docker context that will automatically integrate with AWS's ECS. I'm following this tutorial The author just does: docker context create ecs myecs and gets a "pick an
stackoverflow.com
Passing environment variables to `docker-compose` when using ecs context
I am trying to use the new ecs context that the latest docker cli exposes. When I create the context using docker context create ecs my_context, I select the use environment variables method (the
stackoverflow.com
실행중인 컨테이너 모두 종료 : docker rm -f $(docker ps -aq)