Docker
Docker 특징
Dexlee
2021. 11. 5. 11:31
1. features
- immutable infrastructure
- 이미지로 만들어진 환경을 변경하지 않고, 컨테이너가 움직이는 동안은 파일을 변경해도 오리지널 이미지가 변경되지 않는다.
2. docker CLI command
- docker를 조작하는 명령어
3. Dockerfile
- 이미지를 구축하기 위한 작업을 차례대로 기술한 것.
4. Docker Compose
- 여러 컨테이너와 이미지를 정리하고 쉽게 관리하기 위한 도구
5. docker 운영체제 linux
- windows, macOS 가 아닌 linux 위에서 동작. 그래서 windows나 macOS에서 docker를 사용하게 되면 linux 위에서 도커를 사용. 즉, 도커가 알아서 가상 머신을 만들어주고 그 위에 linux를 설치해 준다. 그 위에 도커(컨테이너)를 운영함.
- 리눅스를 사용하지 않고 도커를 사용하면 어느정도 성능 감소를 생각해야 함. 그런데 mac은 데미안이라고 linux 계열이다. 그래서 바로 도커를 사용 가능.
6. docker port 설정(port forwarding)
- 3000:3000 의미.
- 앞에 3000은 host 포트이고, 뒤에 3000은 container 포트번호이다.
- 즉, 외부에서 도커에 요청이 오는 것은 host 포트와 컨테이너 포트를 지나서 컨테이너에 그 요청이 들어가게 된다.
- 이때, 외부 포트와 host 포트만 맞춰주면 된다.
- 즉, 외부 포트 80 -> host 80 -> container 3000 이렇게 연결이 가능하단 의미다.
- 앞에 3000은 host 포트이고, 뒤에 3000은 container 포트번호이다.
7. container
- 하나의 application process
- cpu, memory, network, disk, web server, host user in container 등이 완전히 분리되어 있는 하나의 독립된 공간
- 그래서 수정 시 모든 내용을 배포하지 않아도 된다. 이 수정하는 내용이 속해 있는 서버만 수정해서 배포하면 된다.
- 각각의 application service에 맞춰 container를 만들어 낸다.
8. docker
- docker 데몬 하에 컨테이너가 동작. 도커 플랫폼 하에 컨테이너들이 동작한다.
- 여기서 linux kernel은 모든 컨테이너가 공유를 한다.
- 그래서 docker host 아래에 컨테이너들이 설치가 되어서 운영되는 것이다.
- build image
- 컨테이너 이미지를 가지고 한다.
- 만약에 nodejs 소스를 빌드한다면, base image로 nodejs 가 있고, app.js(node file) 소스코드의 이미지가 있다.
- 그리고 이 이미지는 uuid로 저장을 해준다.
9. container image vs container
- image는 컴퓨터 상에 저장된 read 할 수 있는 파일(그래서 어디서든지 이미지만 있으면 컨테이너를 실행할 수 있음)
- 즉, image는 file
- container는 image로 실행되어 read, write 할 수 있는 실행하고 있는 process
- 실행되고 있는 process
10. docker pull nginx
- nginx를 받으면 5개의 이미지를 받게 되는데,
- 이 의미는 이 nginx 이미지가 5개 층으로 되어 있다는 의미이고
- 이 5개의 이미지를 실행해야 이 nginx가 정상적으로 실행된다는 의미이다.
11. 외부 -> macOS or windows or linux(docker client) -> server(docker)
- 이러한 구조로 설명할 수 있다.
12. docker engine (docker demon)
- 실제 운영을 담당
13. namespace (linux Kernel’s isolation technology)
- PID 가 구분된다.
14. docker NIC(Network Interface Controller)
- network도 분류된다.
15. docker image 관리
- docker의 image는 repository이름하고 tag로 관리한다.
- [image]:[tag] 이렇게.
references
1. docker cheat sheet
https://www.docker.com/sites/default/files/d8/2019-09/docker-cheat-sheet.pdf
2. docker CLI command
https://docs.docker.com/engine/reference/commandline/docker/
3. dockerfile
https://docs.docker.com/engine/reference/builder/
4. docker-compose vs kubernetes