- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- Git
- LEVEL1
- TWIL
- Err-Handling
- CSS
- typescript
- MariaDB
- LEVEL 1
- sql
- TIL
- 코딩테스트
- Refactoring
- 오늘도 개발자가 안된다고 말했다
- LEVEL 2
- javascript
- 코어 자바스크립트
- 리팩터링 2판
- TMIL
- 프로그래머스
- 아고라스테이츠
- 에러핸들링
- 알고리즘
- CRUD
- First Project
- 면접을 위한 cs 전공지식 노트
- 배포
- mongodb
- Docker
- react
성장에 목마른 코린이
(S3W4) TIL 64일차 220429 (배포 Docker) 본문
오늘의 학습목표
- 컨테이너 기술이 무엇인지, 도커가 왜 필요한지 알 수 있다.
- 컨테이너와 이미지, 레지스트리가 무엇인지 이해할 수 있다.
- 대표적인 레지스트리인 Docker Hub에서 이미지를 검색하고, 사용할 수 있다.
- 한 개의 이미지를 이용해서 컨테이너를 구축할 수 있다.
- 두 개 이상의 이미지를 이용해서 컨테이너를 구축하고 서로가 어떻게 연결되는지 알 수 있다.
- Docker CLI에서 명령어를 사용해서 이미지를 생성/수정/배포하고, 컨테이너를 생성/삭제할 수 있다.
학습내용
컨테이너 기술과 Docker의 탄생 배경
개발자들은 물자의 수송에 획기적인 단축을 가져다준 컨테이너 기술을
"소프트웨어 수송, 즉 배포에 사용할 수는 없을까?" 하는 생각을 하기 시작했습니다.
그 결과로 리눅스 컨테이너(lxc)라는 것을 만들어내기에 이르렀습니다.
리눅스 컨테이너 기술은 그 자체로 훌륭하고 완성된 기술이었지만,
애플리케이션을 쉽게 컨테이너화할 수 있는 생태계 혹은 커뮤니티가 없었습니다.
2013년에 등장한 도커(Docker)는 바로 Docker Hub라는 소프트웨어 저장소와 함께 빠르게 성장했고,
그 결과 개발자들은 쉽게 애플리케이션을 포장하고, 컨테이너 방식으로 실행할 수 있게 되었습니다.
테이너 기술의 장점은 한마디로 얘기하면 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다!
애플리케이션 실행이 어떠한 환경에 구애를 받는다는 말입니다.
왜 Docker인가?
컨테이너 방식의 장점
- 의존성 충돌 문제를 해결해 준다.
- 개발과 배포 환경을 일치시킨다.
- 수평 확장을 쉽게 해준다.
- 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
컨테이너는 무엇을 격리하고, 어떤 자원들을 독립적으로 소유할까요?
하나의 컴퓨터 내에 서로 다른 버전의 php가 설치될 수 있는 것은,
컨테이너 하나하나가 애플리케이션 실행과 관련해서 높은 수준의 격리를 제공하기 때문입니다.
1.프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있습니다.
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없습니다.
2. 네트워크
- 기본으로 컨테이너 하나에 하나의 IP 주소가 할당되어 있습니다.
3. 파일 시스템
- 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있습니다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있습니다.
Docker 핵심 키워드
1. 컨테이너
컨테이너는 앞서 설명한 대로, 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고,
도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자입니다.
2. 이미지
실행되는 모든 컨테이너는 이미지로부터 생성됩니다.
이미지는 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로, 이를 이용해 즉시 컨테이너를 만들 수 있습니다.
이미지를 이용해 여러 개의 컨테이너를 생성할 수 있습니다.
이를 이용해 앞서 설명한 애플리케이션의 수평 확장이 가능합니다.
이미지는 기본 이미지로부터 (마치 git을 사용하는 것처럼) 변경 사항을 추가/커밋해서 또 다른 이미지를 만들 수도 있습니다.
예를 들어 node.js로 작성된 애플리케이션을 이미지로 만들고 싶은 경우,
nodejs 이미지를 기본 이미지로 삼고 내가 만든 애플리케이션을 추가해 넣고, 이미지화할 수 있습니다.
3. 레지스트리
이미지는 레지스트리에 저장됩니다. 대표적인 이미지 레지스트리로는 Docker Hub, Amazon ECR이 있습니다.
도커 CLI에서 이미지를 이용해 컨테이너를 생성할 때, 호스트 컴퓨터에 이미지가 존재하지 않는다면,
기본 레지스트리로부터 다운로드 받게 됩니다.
오늘의 회고
'Today I Learned' 카테고리의 다른 글
(S3W5) TIL 66일차 220503 (배포 자동화/HA) (0) | 2022.05.03 |
---|---|
(S3W5) TIL 65일차 220502 (배포 자동화) (0) | 2022.05.03 |
(S3W4) TIL 63일차 220428 (배포 Amazon Web Service) (0) | 2022.04.28 |
(S3W4) TIL 62일차 220427 (배포 Amazon Web Service) (0) | 2022.04.27 |
(S3W4) TIL 61일차 220426 (Git 브랜치 관리와 고급 기능) (0) | 2022.04.25 |