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 이렇게 연결이 가능하단 의미다.

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

https://stackoverflow.com/questions/47536536/whats-the-difference-between-docker-compose-and-kubernetes