Zero To One

context requires credentials to be passed as environment variables 해결법 본문

docker

context requires credentials to be passed as environment variables 해결법

Zero_To_One 2022. 3. 22. 11:42

Ubuntu20.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 명령어를 실행시키면 됩니다.

 

 

참조

https://stackoverflow.com/questions/67236401/docker-context-create-ecs-myecs-requires-exactly-one-argument

 

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

https://stackoverflow.com/questions/67813708/passing-environment-variables-to-docker-compose-when-using-ecs-context

 

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)