230407 TIL #53 Docker

김춘복·2023년 4월 7일
0

TIL : Today I Learned

목록 보기
53/571

230407 Today I Learned

실전프로젝트 7일차! 진행속도가 생각보다 빠르다. 잘 진행되어가는 것 같다. 오늘은 처음써본 Docker에 대해 정리하고자 한다.


Docker

참고사이트

컨테이너 / 이미지

  • 컨테이너 : 어플리케이션이 구동되는 환경까지 감싸서 외부로부터 격리된 공간에서 실행할 수 있도록 하는 기술. 어플리케이션을 표준화되게 패키징하여 어디서든 동일한 방법으로 실행 및 배포할 수 있도록 해주는 기술이다. 컨테이너 안에서 프로그램은 독립적으로 실행된다.

  • 이미지 : 컨테이너 실행에 필요한 파일과 설정을 포함한 환경까지 묶어서 배포한 것. 이걸 받아 실행시키면 컨테이너로 돌아가게된다. 같은 이미지에서 여러개의 컨테이너를 만들 수 있고, 컨테이너가 바뀌거나 삭제되어도 이미지는 변하지 않는다. 가상머신에 비해 용량이 작다. 읽기만 가능하고 상태값을 가지지 않고 변하지 않는다(immutable).

  • 컨테이너 런타임 : 컨테이너를 다루는 도구. 컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있게 해준다. 가장 유명한 것이 도커.

  • 컨테이너 오케스트레이션 : 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위. 여러 서버(노드)에 컨테이너를 분산해서 배치하거나 컨테이너 교체, 컨테이너 환경 설정 등을 한다. 여러대의 서버와 여러 서비스를 관리하여 자동화하는 기술이다. 소분류로는 스케쥴링, 서비스 디스커버리(ip,포트 자동 매칭), 모니터링, 로깅 등이 있다. 대표적으로 쿠버네티스가 있다.

Docker

도커는 컨테이너 런타임중 가장 널리 쓰이고 업계표준으로 쓰이는 도구이다. 리눅스 컨테이너 기술이다. 도커를 통해 어플리케이션을 쉽고 빠르게 구축, 공유, 실행할 수 있다. 프로젝트마다 환경이 바뀌어도 세팅을 다시 할 필요가 없다. 가상머신 배포 방식과 달리 프로세스 격리로 동작하므로 성능 저하가 거의 없다.

  • Dockerfile
    Dockerfile에 DSL언어를 이용하면 도커 이미지를 생성할 수 있다.
FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...
  • 도커로 배포 과정
  1. 어플리케이션에 필요한 Dockerfile 생성
  2. 어플리케이션을 image로 만들기
  3. 이미지를 public이면 Docker hub, private이면 Registry에 Push.
  4. 서버에서 이미지를 다운로드 받아 컨테이너로 실행(Pull and Run)

Docker 명령어 정리

docker images #현재 Host에 다운 받은 이미지 목록 출력
docker image rm <image ID> #해당 이미지 삭제
docker pull [이미지 이름]:[태그] #이미지 받기 태그 생략시 최신버전 다운
docker rmi $(docker images -q) -f #모든 이미지 삭제
docker exec -it <컨테이너이름> /bin/bash #컨테이너 접속
ctrl+d (or exit) #컨테이너 종료하면서 빠져나오기
ctrl+p 입력후 q #컨테이너 가동을 안끄면서 접속만 빠져나오기
docker ps #실행중인 컨테이너 목록 출력
docker ps -a #실행했던 컨테이너 목록 출력
docker rm <컨테이너이름> #컨테이너 삭제
docker start <컨테이너이름> #컨테이너 실행
docker stop <컨테이너이름> #컨테이너 종료

그외 세부 명령어는 여기참고

profile
Backend Dev / Data Engineer

0개의 댓글