본문 바로가기

ACC/ACC CNU

[ASC 1기] 2주차 - Docker

가상환경: other kernel, 커널 레벨에서부터 격리

도커: Same kernel, 자원만 격리 (반가상화, 가벼움)

 


i는 입출력 옵션, i는 저거 가상 터미널 환경을 에뮬레이션해주는 옵션. 그래서 도커를 run할 때는 -it옵션을 준다.

d옵션은 프로세스가 끝나도 유지되도록 하는 옵션

 

Dockerfile을 만들어서 이미지를 말아주자.

그리고 docker build -t [이미지이름] [경로]

 

aws 들어가서 elastic container repository 들어가서 레포를 하나 만들어주자.

 

그리고 AWS CLI 로그인

후에 aws ecr get-login-password

여기서 막혔었는데 IAM에 AdministratorAccess 권한을 추가해주니 됐다.

 

 

aws ecr get-login-password 명령어로 12시간동안 유효한 토큰을 발급 받은 것.

영구적인 패스워드는 보안에 취약하다고 한다. 그래서 이런 기간이 유효한 토큰을 받아서 로그인을 한다.

깃허브 계정을 만든다고 깃허브에 푸쉬할 때 그 계정의 비밀번호를 쓰는 게 아닌 토큰을 사용하는 것과 같다고 생각하면 된다.

 

 

 

docker build -t accountid.dkr.ecr.region.amazonaws.com/docker_test:0.0.1

accountid는 사용자 로그인할 때 쓰는 12자리 숫자, dkr은 도커같고, ecr은 elastic container repos, docker_test는 ecr 이름, 0.0.1은 태그(보통은 버전이 들어간다). cmd가 명령어를 해석할 때 /문자를 보면 docker build 명령어임을 알 수 있다고 한다.

일모님이랑 성빈님 말하는 거 들어보니깐 슬래쉬가 너무 많아도 안되는듯? 이건 모르겠다.

 

 

 

이렇게 빌딩을 마치고 나면 푸쉬를 해야 한다.

푸쉬하기 전에 로그인을 해야하므로 docker login 명령어로 login해준다. 뒤에 user 옵션을 줘야 하는데 이것도 일모님이랑 성빈님 말하는 거 들어보니깐 무조건 AWS로 해야한다고 한다. (이것은 public이라서 그렇다고 한다.)

Password는 아까 받은 토큰을 붙여넣어준다.

 

 

로그인이 성공했으면 docker push 명령어로 푸쉬해주자.

 

 

docker push [id].[dkr].[ecr].[region].[amazonaws.com]/[ecr_name].[tag]

이제는 익숙한 파라미터이다. 푸쉬도 마찬가지로 이렇게 해주면 된다.

 

 

 

이렇게 하면 성공적으로 push된 것을 확인할 수 있다.

 


메모

 

cmd vs 엔트리포인트

 

cmd와 엔트리포인트, 둘다 명령어 실행.

 

  • cmd: 컨테이너로 올릴 때 사용자가 커맨드를 수정 가능.
  • 엔트리포인트: 수정 불가능

알아보기

 

OAuth

 

OIDC

https://velog.io/@choidongkuen/OIDC%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C