👨🏻‍💻 Development/🐳 Docker

3. 도커 컨테이너 만들어보기: 이론편

황일용 2023. 3. 26. 02:07

https://www.youtube.com/watch?v=9qnD8aODu-4&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=11 

  • 무엇을 컨테이너로 만드는 건지?
  • 컨테이너 어떻게 만드는지? dockerfile ?
  • 컨테이너 배포 하려면?

무엇을 컨테이터로 만드는거죠?

  • 컨테이너
    • 개발한 애플리케이션과 운영환경이 모두 들어있는 독립된 공간

왜 컨테이너로 만듬?

  • polyglot programming(다양한 언어를 사용하여 프로그래밍 하는 것)
    • 개발한 프로그램과 실행환경을 모두 컨테이터로 만듬.
      • 왜와이, 각 서비스(서버) 마다 적합한 언어로 실행될텐데 따로따로 컨테이너로 운영하기 위함.
    • MSA 환경의 Polyglot 애플리케이션 운영.

컨테이너 어떻게 만들어요? (Dockerfile)

Dockerfile

  • container를 만들 수 있도록 도와주는 명령어들의 집합.
  • 컨테이너 이미지를 생성할 수 있는 고유의 지시어(instruction)을 가짐. (가독성을 위해 대문자로 쓰자.)

cheat sheet

USER

  • 보안점 관련하여 중요, container root로 실행하는건 바람직하지 않음.

CMD vs RUN vs ENTRYPOINT

  • CMD: container 실행할때 다른 것으로 치환 가능 (주로 argument, option)
  • ENTRYPOINT : 그 명령어를 치환 하지 못하도록 막음. (주로 명령어)

컨테이너 배포하는 방법.

(build 는 해놓은 상태에서)

  1. docker login
    1. 기본적인 docker hub 는 dokcer login 명령어로 가능.
    2. aws ecr 경우, aws-cli 를 활용하여 권한 획득.
      1. ex) aws ecr get-login-password --region {*region}* | docker login --username AWS --password-stdin {*aws_account_id*.dkr.ecr.*region*.amazonaws.com}
  2. docker tag 를 달아주고
  3. docker push {image}:{tag}