Docker 란?
- 컨테이너 방식으로 어플리케이션을 실행한다.
=> 컨테이너 방식을 통해 실행환경을 격리시킨다.
=> 컨테이너 격리 시 독립적으로 소유할 수 있는 자원
1. 프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 할 수 있다.
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.
2. 네트워크
- 기본으로 컨테이너 하나에 하나의 IP주소가 할당되어 있다.
3. 파일 시스템
- 컨테이너 안에서 사용되는 파일 시스템은 구획화 되어있다.
- 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다.
- 동일한 서비스가 실행 환경이 다른 여러 컴퓨터에서 작동하도록 한다.
장점
- 의존성 문제 해결
- 개발과 배포 환경을 일치시켜준다.
- 수평 확장을 쉽게 해준다.
- 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
Docker 핵심 키워드
- 컨테이너
=> 어플리케이션의 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고 도커라는 기술 위에 실행될 수 있도록 만든 어플리케이션 상자
- 이미지
=> 모든 컨테이너 실행을 위해선 이미지가 필요하다
=> 어플리케이션 및 어플리케이션 구성이 담겨있는 템플릿
=> 이미지를 이용하여 원활한 수평확장이 가능하다.
=> base image로 부터 변경사항을 추가/커밋 하여 다른 이미지 생성 가능
- 레지스트리
=> 이미지가 저장되는 곳
ex) Docker Hub, Amazon ECR 등이 있다.
=> 도커 CLI에서 이미지를 이용해 컨테이너를 생성할 때 호스트 컴퓨터에 이미지가 존재하지 않는다면 기본 레지스트리를 다운받게 된다.
* Docker 와 가상 머신의 차이
- Docker 는 OS를 미포함(각 컨테이너는 호스트 커널을 공유한다.) // VM은 OS를 포함
Docker 설치 참고 링크
1. Mac OS
https://docs.docker.com/desktop/install/mac-install/
2. Ubuntu
https://docs.docker.com/engine/install/ubuntu/
docker/whalesay 이미지 실행 실습
1. docker/whalesay 는 레지스트리 계정, 레포지토리 이름, 태그 세가지 정보로 구성되어있다.
*레지스트리 (Registry)
- 도커 이미지를 관리하는 곳 ( Docker Hub : https://hub.docker.com/ )
- 미 지정 시 도커 허브를 기본 레지스트리로 설정
- 레지스트리는 Docker Hub, Private Docker Hub, 회사 내부용 레지스트리 등으로 나뉠 수 있다.
* 레포지토리 (Repository)
- 레지스트리 내 도커 이미지가 저장되는 곳
- 이미지 이름이 사용되기도 함
- GitHub의 레포지토리와 유사함
* 태그 (Tag)
- 같은 이미지 일지라도 버전 별로 안의 내용이 조금 다를 수 있다.
- 주로 버전 정보를 입력한다.
- 특별히 지정하지 않을 시 태그가 latest 인 이미지를 가져온다.
2. Docker/Whalesay 이미지 실행
% docker -v // 도커 설치 정보 확인
Docker version 20.10.21, build baeda1f
- 도커 설치 확인
docker image pull docker/whalesay:latest
- docker/whalesay 이미지 가져오기 (latest 버전)
docker image ls
- image 파일 목록 확인 (원하는 항목이 설치되었는지 확인)
- 이미지 ID, Size 등 정보를 알 수 있음
docker container run --name 컨테이너_이름 docker/whalesay:latest cowsay boo
- docker container run 명령어를 사용하여 컨테이너 생성 // 원하는 컨테이너 이름 작성
- docker run 명령어
-i : 사용자가 입출력 할 수있는 상태
-t : 가상 터미널 환경을 에뮬레이션 한다.
-d : 컨테이너를 일반 프로세스가 아닌 백그라운드로 실행한다.
- 컨테이너 실행 시 출력되는 화면
docker container ps -a
- 컨테이너 실행 목록 출력 (ps)
- -a : Default 로 실행되는 컨테이너지만 종료된 컨테이너를 포함하여 모든 컨테이너 출력 옵션
docker container rm 컨테이너_이름
- 컨테이너 삭제 (컨테이너 이름 or 컨테이너 ID를 입력 - ID 일부만 입력해도됨)
docker image rm <이미지이름 or ID>
- 이미지 삭제
'Orchestration > Docker' 카테고리의 다른 글
[Mac OS]Docker Copy, Dockerfile (pacman/canvas) (0) | 2023.01.05 |
---|