01. Docker 기초

CHOISUJIN·2023년 5월 22일
0
post-thumbnail

🐳 도커(Docker)란?

  • 애플리케이션을 개발/배포/실행하기 위한 플랫폼!
  • 컨테이너를 사용하여 애플리케이션 및 지원 구성 요소를 개발
  • 리눅스 자체 기능을 사용하여 프로세스 단위의 격리 환경을 제공
  • 배포 용량과 시간을 단축하고, 성능 손실을 최소화시킴

도커 엔진

  • 외부에서 Docker API 요청을 받아 Docker 객체와 서비스들을 관리
  • 컨테이너를 생성하고 관리하는 주체
  • 도커 데몬(demon) : 도커 프로세스가 실행되어 입력받을 준비가 된 상태
  • 도커 클라이언트 : 입력된 명령어를 Docker API 형태로 도커 데몬에게 전달 (-> 도커 엔진의 수행 결과를 반환받아 사용자에게 출력)
  • 도커 레지스트리(Registry): 도커에서 사용되는 이미지들을 저장하고 공유해주는 원격 저장소

☑️ 도커 이미지 관리

🌟 도커 이미지

  • 컨테이너를 만들고 실행하기 위한 읽기 전용 파일(템플릿)
  • 모든 컨테이너는 이미지 기반으로 생성됨
  • 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하고 있음

<검색 방법>
1. 도커 허브에서 이미지 검색
2. 📍 docker search <키워드>

<이미지 다운로드>
📍 docker pull [저장소이름/]<이미지이름>[:태그]
ex) docker pull tomcat:9.0

  • 저장소 이름 생략 시 도커 허브 공식 이미지로 인식
  • 태그는 버전을 나타냄 (생략시 최신 버전 latest 으로 인식)

🌟 도커 이미지와 컨테이너

  • 컨테이너는 필요한 파일과 설정을 이미지에서 읽기전용으로 가져다 사용하고, 변경된 사항만 컨테이너 계층에 별도 저장
  • 하나의 이미지로 여러 컨테이너에서 사용 가능

  • 다운받은 이미지 목록 조회
    📍 docker images
  • 이미지 세부 정보 조회
    📍 docker image insepect <이미지 ID>
  • 도커 이미지 추출 : 도커 이미지를 별도의 파일로 저장할 때 사용
    📍 docker save -o <파일명> <이미지명>[:태그]
    ex) docker save -o /Users/sujinchoi/tomcat_image tomcat:9.0
  • 도커 이미지 로드 : 추출된 파일을 다시 도커 내 이미지로 로드
    📍 docker load -i <파일명>
    ex) docker load -i /Users/sujinchoi/tomcat_image
  • 도커 이미지 이름 추가 : 기존 이미지를 새로운 이름으로 추가
    📍 docker tag [기존저장소/]<기존이미지명>[:기존태그][새로운저장소/]<새로운이미지명>[:새로운태그]
    ex) docker tag tomcat:9.0 mytom:1
    -> IMAGE ID는 같고 이름만 다른 이미지 추가됨
  • 도커 이미지 삭제
    📍 docker rmi <이미지이름:태그 or IMAGE ID>
    ex) docker rmi mytom:1 -> 이름 추가(tag)된 이미지가 있으면 이미지는 삭제되지 않고 이름만 제거(untag) 됨
    docker rmi tomcat:9.0 -> 이미지 삭제

☑️ 도커 컨테이너 관리

🌟 도커 컨테이너

  • 도커 이미지의 실행 가능한 인스턴스
  • 개별 애플리케이션의 실행에 필요한 실행환경을 독립적으로 운용
  • 컨테이너 생성
    📍 docker run [옵션][저장소이름/] <이미지이름>[:버전]
    ex) docker run -d --name myweb -p 80:8080 tomcat:9.0.75-jdk11
    다운받은 이미지가 없는 경우 자동으로 다운받아서 생성됨
    -> 이미지 다운로드(pull) + 컨테이너 생성(create) + 실행(start) + 접속(attach)까지 한번에 수행
  • 컨테이너 확인
    📍 docker ps [옵션]
    ex) docker ps -a : 전체 컨테이너 확인
  • 컨테이너 상세 내용 조회
    📍 docker inspect <컨테이너 이름 or ID>
    ex) docker inspect myweb
  • 컨테이너로 파일 복사
    📍 docker cp [옵션] <원본파일경로> <복사할 경로>
    -> 경로가 컨테이너 내부일 경우 <컨테이너명:켱로>로 지정
    ex) docker cp /Users/sujinchoi/test.txt myweb:/root
  • 컨테이너 실행/종료
    📍 docker start/stop/restart <컨테이너 이름 or ID>

컨테이너 명령어 실행
📍 docker exec [옵션] <컨테이너이름 or ID> <명령어>
ex) docker exec -it myweb /bin/bash

  • 쉘을 실행하면 컨테이너에 접근 가능
  • 쉘 접근 후 다양한 명령어 사용 가능(종료시 exit)

컨테이너 삭제
📍 docker rm [옵션] <컨테이너이름 or ID> [컨테이너 이름 or ID ...]
ex) docker rm -f myweb

profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글