[그림과 실습으로 배우는 쿠버네티스 입문] 1장. 도커 컨테이너 만들어 보기
|
1.1 쿠버네티스는 왜 도커가 필요한가?
- 쿠버네티스는 컨테이너 관리용 도구
- 컨테이너는 도커만을 의미하지 않음
1.2 도커 알아보기
1.2.1 도커란?
- 도커(Docker)란 컨테이너라는 가상화 기술 중 하나
- 컨테이너 기술 자체는 오래 전부터 있었지만, 도커의 등장으로 세상에 널리 알려지게 됨
- Docker사가 2013년에 ‘Build, Share, Run’ 이라는 일련의 라이프사이클을 docker 라는 명령어로 제공하여 컨테이너 기술을 훨씬 더 사용하기 쉽게 만듦
1.2.2 컨테이너란?
- 컨테이너란 운영체제(OS) 위에 만들어지는 격리된 가상 환경
- 프로세스와 다른 점은 컨테이너 간에 실행 환경을 참조할 수 없다는 점
- 예를 들어 컨테이너 A 안에서 생성된 파일을 컨테이너 B 가 마음대로 참조할 수 없음
- 또한 컨테이너 A 안에 설치된 프로그램을 컨테이너 B 가 실행하는 것도 불가능함
1.2.3 왜 컨테이너인가?
크게 두 가지 이유
- 가상 머신보다 더 빠르게 애플리케이션을 실행할 수 있다.
- 가상 머신은 컨테이너와 달리 운영체제를 포함하여 가상화함
- 컨테이너 기술의 등장으로 가상 머신보다 더 빠르게 애플리케이션을 실행할 수 있게 됨
- 마이크로서비스 아키텍처를 사용하는 곳이 많아졌다.
- 마이크로서비스 아키텍처를 사용함으로써 보다 빠르고 유연하게 고객에게 가치를 제공할 수 있는 인프라가 필요하게 됨
1.2.4 그래서 도커란?
- 도커는 컨테이너 기술을 이용해 어디서도 동일한 환경(컨테이너)을 만들 수 있게 해줌
- 도커의 강점은 docker 명령어로 그 모든 사이클을 다룰 수 있다는 점
- 어떤 컴퓨터에서든 도커를 실행할 수 있다면 동일한 컨테이너를 실행할 수 있음을 보장함
1.2.5 준비: 도커 환경 만들기
1.2.6 컨테이너 실행하기
1.2.7 컨테이너의 틀이 되는 도커 이미지
- 도커 이미지는 애플리케이션을 실행하는 데 필요한 모든 것과 메타데이터 등 컨테이너의 각종 설정의 집합체
- 모든 것이란? 모든 의존관계, 설정, 스크립트, 바이너리 등
- 도커 이미지는 여러 개의 이미지 레이어를 겹겹이 쌓아 올려 만듦
- 기존 레이어 위에 새로운 레이어를 겹쳐 쌓으면서 새로운 도커 이미지를 만듦
- 컨테이너를 실행하는 데 필요한 모든 것이 도커 이미지에 정리되어 있기 때문에, 동일한 도커 이미지를 사용하면 다른 컴퓨터에서 실행해도 항상 동일한 환경을 구축할 수 있음
1.2.8 컨테이너 이미지의 설계서인 Dockerfile
- Dockerfile 은 컨테이너 이미지의 설계서
- 이 파일에 대해
docker build명령어를 실행하면 도커 이미지가 만들어짐 - 기존에 이미 존재하는 도커 이미지만 그대로 사용하는 것이라면 Dockerfile 을 사용할 필요가 없음
- 쿠버네티스를 사용할 때도 반드시 Dockerfile 을 작성해야 하는 것은 아님
- 하지만 애플리케이션을 개발한다면 새로운 도커 이미지를 생성하는 경우가 대부분
- Dockerfile 에는 도커 이미지를 어떻게 만들어야 하는지 애플리케이션의 실행에 필요한 모든 프로그램과 설정을 작성한다.
- Dockerfile 의 시작 부분은 반드시 FROM 으로 시작해 베이스가 되는 이미지를 지정해야 한다.
1.2.9 도커 이미지 빌드하기
index.html
| |
Dockerfile
- Run
| |
1.2.10 직접 만든 도커 이미지로 컨테이너 실행하기
| |
--rm: 컨테이너가 종료되면 자동으로 컨테이너를 삭제--detach(-d): 컨테이너를 백그라운드에서 실행함--publish(-p): 포트 포워딩, 컨테이너의 80번 포트를 호스트 컴퓨터의 8080 포트에 연결—-name: 컨테이너의 이름을 지정

1.2.11 도커 이미지 공개하기
- 컨테이너 이미지를 공유하기 위한 상자가 바로 레지스트리
- 컨테이너 이미지를 업로드하는 공간을 컨테이너 레지스트리라고 함
- 레지스트리를 만들 때는 프라이빗 혹은 퍼블릭 레지스트리로 만들 수 있음
1.2.12 Dockerfile 작성 팁
- 공식 문서에 적힌 권장 사항은 전체 내용을 꼼꼼히 읽어 보는 것이 좋음
- 주의: 비밀 및 기밀 정보는 도커 이미지에 포함시키지 말 것
- 권장 사항: 멀티 스테이지 빌드 수행
1.3 [만들기] 나만의 http server 컨테이너 실행하기
main.exs
Dockerfile
terminal
| |