도커 사용 이유와 기본 문법

Dae-Hee·2023년 2월 19일
0

Docker Study

목록 보기
2/2
post-thumbnail

▪︎ 왜 도커를 쓸까 ?

실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다.
CPU 아키텍쳐?(intel, M1,2…)는 지장을 받음

  • 의존성 충돌 문제를 해결

    • A라는 프로그램은 java 17 버전 이상 환경이 구축이 되어있어야 프로그램이 정상 작동된다.
    • 동일한 환경에서 java를 필요로 하는 B이라는 프로그램을 실행시켜야 하는데, java 17 버전이 아닌 16 버전을 사용할 때에만 제대로 작동한다고 가정하면 의존성이 충돌해버리는데 이런 문제를 컨테이너가 해결해준다.
    • 애플리케이션을 컨테이너 내에 구성합니다. 즉, 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고, 각자 고유의 의존성을 포함한다.
  • 개발과 배포 환경을 일치

    • 어떠한 운영체제든 상관없이 같은 명령어로 즉시 환경을 구축하고 실행할 수 있다.
    • Docker compose를 사용하면 명령어 단 한줄로 여러개의 도커 컨테이너를 동시에 실행
    • 환경구축을 코드(스크립트)화 해서 관리 할 수 있고 서버 운영 기록을 코드화 할 수 있다.
  • 수평적 확장 용의

    • 컨테이너는 실행 환경의 일치하기 때문에 동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서에 이 서버를 추가

▪︎ Docker 기본 명령어

  • 컨테이너 조회 docker ps -a
  • 컨테이너 중지 : docker stop {컨테이너 이름 혹은 아이디}
  • 컨테이너 삭제 : docker rm
  • 이미지 조회 : docker images
  • 이미지 빌드 : docker build -t {이미지 이름} .
  • 이미지 실행 : docker run -d -p 80:3000 {이미지 이름}
  • 이미지 삭제 : docker rmi {이미지id}
  • 컨테이너 접근 : docker exec -it {컨테이너 아이디} bash

▪︎ Dockerfile 포멧

  • FROM
    • base 이미지를 지정해주기 위해서 사용되는데, 보통 Dockerfile 내에서 최상단에 위치
  • WORKDIR
    • 쉘(shell)의 cd명령문처럼 컨테이너 상에서 작업 디텍토리로 전환을 위해서 사용,
      그 뒤에 모든 명령문은 해당 디렉터리를 기준으로 실행
  • RUN
    • 필요한 커맨드를 실행하기 위해서 사용,
      보통 이미지 안에 특정 소트트웨어를 설치하기 위해서 많이 사용
  • CMD
    • 해당 이미지를 컨테이너로 띄울 때 디폴트로 실행할 커맨드나, 
      ENTRYPOINT 명령문으로 지정된 커맨드에 디폴트로 넘길 파라미터를 지정할 때 사용
  • EXPOSE
    • 네트워크 상에서 컨테이너로 들어오는 트래픽(traffic)을 리스닝(listening)하는 포트와 프로토콜를 지정하기 위해서 사용(포트 허용)
  • COPY
    • 호스트 컴퓨터에 있는 디렉터리나 파일을 Docker 이미지의 파일 시스템으로 복사하기 위해서 사용

0개의 댓글