티스토리 뷰
👀 Docker의 기본 개념 이해
✔ 컨테이너 (Container)
- 애플리케이션을 독립적으로 실행할 수 있는 가벼운 환경
- 실제 사용하는 것 (≒ 빵)
✔ 이미지 (Image)
- 컨테이너의 실행 파일 및 종속성을 포함한 템플릿
- 간단히 설명하면 이미지는 컨테이너를 만드는 '빵틀'과 같다.
사용자는 빵틀이 아닌 빵틀로 만들어낸 빵을 원한다. 즉, 이미지 자체로는 큰 쓸모가 없으며 컨테이너를 만드는데 사용한다.
✔ Docker Daemon
- Docker의 백그라운드에서 실행되는 프로세스
✔ Docker CLI
- 커맨드라인에서 Docker와 상호작용하기 위한 명령어 도구
✔ Docker Hub
- Docker 이미지의 공식 저장소
✔ 마운트
- 디스크를 연결해 데이터를 기록할 수 있도록 한 상태
- '볼륨을 마운트한다' : 호스트 시스템의 디렉토리나 파일을 도커 컨테이너에 연결하여, 컨테이너가 그 디렉토리나 파일에 접근하고 사용할 수 있게 만드는 것을 의미
✔ 호스트
- 도커가 설치된 물리적 서버
✔ 볼륨 (Volume)
- 컨테이너와 호스트 간의 데이터를 공유하기 위한 방법. 컨테이너가 삭제되어도 데이터가 유지된다.
✔ 데이터 퍼시스턴시 (Data Persistency)
: 컨테이너는 생성 및 폐기가 매우 빈번하므로 매번 데이터를 옮기는 대신 애초에 컨테이너 외부에 데이터를 둔다.
✔ 네트워크 (Network)
- 여러 컨테이너 간의 통신을 위한 네트워크 구성을 정의한다. 기본적으로 브릿지, 호스트, 오버레이 등 여러 네트워크 모드를 제공한다.
✔ 오케스트레이션 (Orchestration)
- 여러 개의 컨테이너를 효과적으로 관리하고 자동화하기 위해 사용하는 기술. 대표적인 도구로 Kubernetes, Docker Swarm등이 있음
✔ CMD와 ENTRYPOINT
- CMD와 ENTRYPOINT는 Docker컨테이너가 실행될 때 수행할 기본 명령어를 지정한다.
- CMD는 인자처럼 변경이 가능하고
- ENTRYPOINT는 고정된 명령어로 설정된다.
✔ 데몬 (Daemon)
- 유닉스 또는 리눅스에서 동작하는 프로그램 중에서 백그라운드에서 항상 동작하는 프로그램을 관례적으로 일컬어 데몬이라고 한다.
🏢 컨테이너
✔ 컨테이너의 생애주기?
- 컨테이너는 쉽게 만들 수 있기 때문에 오래된 컨테이너를 유지보수 하는 수고보다 새로 만드는 것이 덜 수고스럽다.
- 컨테이너를 만들고 → 실행하고 → 종료하고 → 폐기하는 과정이 컨테이너의 생애 주기이다.
- 하지만 폐기하기 전, 데이터가 존재한다면 도커가 설치된 물리적 서버(호스트)의 디스크를 마운트해 데이터를 저장해야한다.
✔ 컨테이너의 로그 관리
- Docker는 기본적으로 컨테이너의 표준 출력 로그를 관리한다
- docker logs 명령어를 사용해 로그를 확인할 수 있다.
🤷♀️ 도커의 장단점
✔ 도커의 장점
"환경을 격리할 수 있다" 는 핵심이 되는 성질 덕분에 아래와 같은 장점을 가진다.
1. 독립된 환경
: 독립된 환경으로 여러 개의 컨테이너를 띄울 수 있으며, 똑같은 애플리케이션도 여러 개 띄울 수 있다.
2. 이미지 생성 및 배포
: 이미지를 만들고 도커허브에 배포하여 사용할 수 있으므로 교체가 쉽고, 업데이트가 간편하다.
또한, 이미지를 사용해 이동이 쉬우므로 똑같은 컨테이너를 쉽게 만들거나 환경 이동, 개발환경 구축이 쉽다.
3. 커널이 없다.
: 운영체제의 핵심이 되는 커널을 포함시킬 필요가 없으므로 소프트웨어적으로 하드웨어를 재현하는 가상화 기술에 비하면 압도적으로 가볍다.
✔ 도커의 단점
1. 리눅스 한정
: 리눅스 운영체제를 사용하는 기술이므로 리눅스용 소프트웨어밖에 지원하지 않는다.
2. 물리서버 한 대에 여러 대의 서버를 띄우는 형태
: 호스트 서버에 문제가 생기면 모든 컨테이너에 영향을 미친다.
3. 단일 컨테이너라면 장점을 느끼기 힘들다.
: 단일 컨테이너라면 도커 엔진이 단순한 오버헤드에 지나지 않기 때문에 컨테이너를 여러 개 사용하는 형태를 가정한다.
🔧 윈도우 설치 방법
1. 제어판 항목 활성화
- 제어판 > 프로그램 > 프로그램 및 기능 > Windows 기능 켜기/끄기 접속
- [Linux용 Windows 하위시스템] 과 [가상 머신 플랫폼] 기능을 체크한 뒤 확인버튼 클릭
- PC 재부팅
2. 리눅스 커널 업데이트
- https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 접속 후 다운 및 설치
3. 윈도우용 Docker 다운로드 및 설치
- https://docs.docker.com/docker-for-windows/install 접속 후 다운 및 설치파일 실행
- 환경 설정 항목 모두 체크표시 후 [OK] 버튼 클릭
- 설치완료 후 [Close and log out] 버튼을 클릭해 윈도우에 다시 로그인 (여기서 블로그 백업을 안해서 캡처본이 다 날아감 ಥ_ಥ)
4. Docker Subscription 동의
- Accept 버튼 클릭
5. Use recommended settings 체크 후 Finish
6. 계정 로그인 (없으면 간단히 회원가입 가능!)
7. 쨔란~✨
💡 내가 WSL 2를 사용하고 있나 궁금하다면 해당 대쉬보드 우측 상단에 setting접속 > General > Use the WSL 2 based engine 항목에 체크되어있나 확인
→ 체크안되어있으면 도커 엔진이 Hyper-V를 통해 동작하고 있음
도커의 조작 및 컨테이너 생성 작업들은 추후 게시글에 업로드하기 안하면 앞으로 빵 없음 (내자신과의 약속임)
'Programming > DevOps' 카테고리의 다른 글
[Linux] 리눅스 환경에서 su와 sudo의 차이점 (0) | 2024.12.11 |
---|---|
[Docker] 도커 스토리지 마운트 & 도커 컴포즈 (4) | 2024.11.01 |
[Docker] 도커 명령어 : 커맨드 및 옵션 (2) | 2024.11.01 |
- Total
- Today
- Yesterday
- bruteforce
- 아이템61
- DevOps
- 완전탐색
- BOJ
- EffectiveJava
- dp
- cicd
- Retrofit2
- 이펙티브자바
- 토큰기반인증
- 아이템59
- 백준
- OS
- 그래프탐색
- docker
- 아이템60
- 완탐
- 순열
- dfs
- subset
- docker-compose
- 운영체제
- 조합
- 알고리즘
- BFS
- Container
- Java
- IMAGE
- springboot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |