본문 바로가기

나의 공부

Docker

장점

  1. 가상환경의 필요성 충족
    • 모놀리식 아키텍처
      • 정의 
        • 여러 서비스들을 다 묶어서 한 프로그램으로 구현
          • ex) 개발팀들을 분리 X
      • 단점
        • 전체 컴파일 오래 걸림
        • 오류 예방 힘듬
        • 서비스 점검 시, 모든 프로그램 중단
    • 마이크로 서비스 아키텍처
      • 정의 
        • docker가 지원하는 서비스
        • 서비스를 잘게 나눔
      • 장점
        • 자원의 효율성, 개발 프로세스 단순화
        • 개발팀별로 환경이 다르므로 컨테이너를 통해 독립적 서비스 제공 가능
      • 예시
        • 네이버에서 메일 개발팀, 뉴스 개발팀, 카페 개발팀 등으로 분리

수 많은 컨테이너가 모여서 한 서비스를 구성.

2. VM (Virtual Machine)보다 효율적, 속도 빠름

VM    vs    Container
Docker과 VM의 속도 차이
 컨테이너 이용하면 같은 메모리에서 VM보다 많은 앱 돌릴 수 있음.


구조

도커 위에서 파일, 애플리케이션 등을 돌림

  • 베어 메탈 머신
    • 어떤 OS도 구현되지 않은 깡통의 컴퓨터
  • Bins/Libs
    • 파일

원하는 이미지를 웹사이트에서 찾기

 

Docker Hub

Docker Certified:Trusted & Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp

hub.docker.com

 

 


Docker Life Cycle

CREATE
  • 이미지를 실해이키려면 컨테이너를 만들어줘야함
    • 이미지 자체 : 실행 불가
  • CREATE해서 같은 컨테이너는 override 안됨
    • 같은 이미지를 CREATE를 n번하면 n개의 컨테이너 생성
RUN
  • create + start
    • create는 override안되므로 여러개의 컨테이너를 만들고자 하는게 아니라면
      RUN은 신중하게 처음에만 사용
STOP
  • Memory에서 컨테이너를 내림(off)
RM
  • 컨테이너 삭제
RMI
  • 이미지 삭제
COMMIT
  • 컨테이너를 이미지화
    • 컨테이너에 저장된 파일을 이미지로
 
  •  
 
  •  
 
  •  
 
  •  

용어

쿠버네티스
  • 수많은 도커를 처리(?)하는 도구
이미지
  • 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
컨테이너
  • 이미지가 실행된 상태
  • 이미지를 격리하여 독립된 공간에서 실행한 가상환경
레지스트리
  • 이미지 보관소

  • 레지스트리 -> 이미지 가져옴 (static한 상태로)
  • 이미지를 실행하기 위해 컨테이너 필요

 

 


Docker Command

docker
  • docker 명령어 모음
docker search [찾고자하는 앱]
  • docker search java
    • java관련된 이미지 찾아줌.
sudo docker search [찾고자하는 앱]
  • 관리자 권한으로 앱 찾기
docker run ~
  • 다운로드 + 실행
docker pull [다운 원하는 이미지 이름]
  • 도커 공식 이미지 저장소에서 해당 이미지만 다운로드
    • ex) docker pull oracle11g
docker images
  • 다운받은 이미지 목록 확인
docker create [옵션] [이미지 이름] : [태그]
  • ex) docker create -i -t oracle11g
    • -i
      • Interative Mode
      • 상호 입출력
    • -t
      • TTY Mode
      • tty를 활성화하여 bash쉘을 이용
docker ps
  • 컨테이너 목록 확인
docker start [컨테이너 이름]
  • 컨테이너 실행하기
docker inspect [컨테이너ID]
  • 컨테이너 정보 조사
docker exec [옵션] [컨테이너 이름 or 아이디 앞부분 일부] [커맨드]
  • 실행되는 컨테이너 안에 명령 내림
  • ex) docker exec -it oracle11g sqlplus
docker run [OPTIONS] IMAGES[:TAG | @DIGEST] [COMMAND] [ARG...]
옵션 설명
-d detached mode (백그라운드 모드)
백그라운드에서 컨테이너를 실행시키기 위한 옵션
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
ex) -p : 1521 : 1521
      localhost 1521을 오라클 도커 컨테이너의 포트 1521과 연결
ex) -p : N
       N번 포트를 외부에 노출.
       컨테이너에서 맵핑되는 내부 포트는 알아서 랜덤으로 결정
ex) -p A : B
      내부 A포트를 외부 B에 노출.
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
ex) -v<host_dir>:<container_dir>
      컨테이너에게 data폴더를 넣어주는 역할
      저장공간을 컨테이너 내부와 외부에 공유하는 기능
-e 컨테이너 내에서 사용할 환경변수 설정
ex) -e USER=user -e PASS=pass
-name 컨테이너 이름 설정
-rm 프로세스 종료 시, 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
-link 컨테이너 연결 

 

lsof -PiTCP -sTCP:LISTEN
  • LISTEN포트를 확인
 
  •  
 
  •