컨테이너 1개 = 애플리케이션 1개
각 컨테이너는 독립적으로 격리되서 운영됨
user id 와 cpu, memory, network, disk 등 하드웨어 리소스를 각각 따로따로 가지고 있음
독립적이기 때문에 nodejs webserver 는 php나 mysql에 영향을 주지 않는다.
그래서 고객이 webserver 에 버튼하나 만들어달라고 하면 nodejs webserver 만 수정해서 배포하면 됨.
컨테이너는 어떻게 동작하는가
docker HOST : 컨테이너를 동작시킬 수 있는 os. 리눅스 커널을 가지고 있음.
docker HOST 에 도커를 설치하고 systemctl start docker 명령어로 시작하면 dockerd(도커 데몬)이 동작함. 도커 데몬이 없으면 컨테이너가 동작할 수 없음.
HOST 입장에서 컨테이너는 단순히 프로세스 하나이다.
컨테이너와 컨테이너 이미지의 차이
컨테이너 이미지 run -> 컨테이너
3번째 레이어 : 실행 명령어 이미지
2번째 레이어 : 소스코드 이미지
1번째 레이어 : base 이미지(필요 환경)
만들고자 하는 컨테이너마다 레이어의 개수는 다를 수 있음.
시스템에서는 각각의 이미지를 서로 다른 UUID로 저장함.
하나의 컨테이너에 필요한 이미지들의 조합이 컨테이너 이미지이다.
컨테이너 이미지는 파일형태로 저장된다.(위의 경우 3개의 파일)
컨테이너를 만들 때 이 구조대로 빌드한다.
컨테이너 이미지 = 저장소에 저장되어 있는 그냥 파일. RO : read only
이 컨테이너 이미지를 run(실행) 시키면
HOST 에서 동작하는 컨테이너(하나의 프로세스). RW : read and write
컨테이너 이미지를 다운받아서 실행시키는 방법
Docker HOST 에 도커를 설치하고 dockerd 가 실행중이다.
nginx 웹서버를 만들어보자
docker client command 입력
$ docker search nginx : hub.docker.com 에 nginx 컨테이너 이미지가 있는지 검색. 있으면 리스트 출력
$ docker pull nginx:latest : 이미지가 있으면 다운로드.
$ docker run -d --name web -p 80:80 nginx:latest : nginx:latest 컨테이너 이미지를 web 이라는 이름의 컨테이너로 실행시킴.
라이브러리를 설치하거나, 설정파일을 만들거나, 웹페이지를 만들어서 넣지 않아도 이미 컨테이너 이미지로 다 만들어져 있기 때문에 그냥 가져다 실행하면 바로 운영 가능.
출처
https://www.youtube.com/watch?v=m454YTyPWSk&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=10
'도커' 카테고리의 다른 글
Docker Hub 에서 429 (too many request) 에러가 났다. (0) | 2023.04.20 |
---|---|
도커 실습 : 컨테이너 이미지 다운로드 및 실행 (0) | 2023.02.17 |
컨테이너란? 도커란? (1) | 2023.02.16 |
댓글