장점
- 가상환경의 필요성 충족
- 모놀리식 아키텍처
- 정의
- 여러 서비스들을 다 묶어서 한 프로그램으로 구현
- ex) 개발팀들을 분리 X
- 여러 서비스들을 다 묶어서 한 프로그램으로 구현
- 단점
- 전체 컴파일 오래 걸림
- 오류 예방 힘듬
- 서비스 점검 시, 모든 프로그램 중단
- 정의
- 마이크로 서비스 아키텍처
- 정의
- docker가 지원하는 서비스
- 서비스를 잘게 나눔
- 장점
- 자원의 효율성, 개발 프로세스 단순화
- 개발팀별로 환경이 다르므로 컨테이너를 통해 독립적 서비스 제공 가능
- 예시
- 네이버에서 메일 개발팀, 뉴스 개발팀, 카페 개발팀 등으로 분리
- 정의
- 모놀리식 아키텍처
2. VM (Virtual Machine)보다 효율적, 속도 빠름
구조
- 베어 메탈 머신
- 어떤 OS도 구현되지 않은 깡통의 컴퓨터
- Bins/Libs
- 파일
원하는 이미지를 웹사이트에서 찾기
Docker Life Cycle
CREATE
- 이미지를 실해이키려면 컨테이너를 만들어줘야함
- 이미지 자체 : 실행 불가
- CREATE해서 같은 컨테이너는 override 안됨
- 같은 이미지를 CREATE를 n번하면 n개의 컨테이너 생성
RUN
- create + start
- create는 override안되므로 여러개의 컨테이너를 만들고자 하는게 아니라면
RUN은 신중하게 처음에만 사용
- create는 override안되므로 여러개의 컨테이너를 만들고자 하는게 아니라면
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쉘을 이용
- -i
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포트를 확인