Docker는 컨테이너를 위한 운영체제다.
컨테이너는 VM보다 조금 더 가벼운 개념으로
VM에서는 각각의 OS가 별도로 존재하며 이를 Hypervisor로 리소스를 관리하는 느낌이라면
컨테이너는 OS까지는 동일하고 Docker Engine 위에 앱들을 올려놓은 느낌이다.
Docker를 통한 이점으로는
모듈성이 강하다
변화가 있을때 이를 새로운 레이어로 만들어 계층적으로관리하여 롤백이 쉽다는 것이 있다
단점으로는 이렇게 나누어진 앱들을 통합해서 관리하기 시작하면 복잡성이 증가하며 컨테이너를 그룹화할 필요성이 생긴다.
이떄 사용하는 것이 쿠버네티스라는데 이거는 나중에 공부...
Docker 데몬에도 보안 문제가 있을 수 있는데, 도커 실행하는데 가장 많이 사용하는 persist runtime인 도커 데몬을 사용하려면 루트 권한이 필요하므로 이를 다루는 계정이 주의를 기울여야함.
Docker Hub
깃헙마냥 Docker위에 올리는 Docker Image 저장소 서비스임
도커의 구성 방식인데, 클라이언트에서 cli 등으로 대몬에 소통한다. 동일한 시스템에서 사용하거나 원격 데몬 사용가능함. REST API를 사용해 UNIX 소켓이나 네트워크 인터페이스를 통해 소통함.
다른 도커 클라이언트는 컨테이너 집합으로 구성되어있는 앱으로 작업할 수 있게 해주는 Docker-compose임
Docker Image
도커 이미지는 도커 컨테이너를 만드는데 필요한 instruction이 들어있는 read-only template임. image는 다른 image에 기반을 주고 있는 경우가 많음.
docker run -i -t ubuntu /bin/bash
이런 커맨드를 CLI 상에서 실행했을때, ubuntu image가 로컬에 없으면 이를 가져옴.
docker container create를 수행한거처럼 새로운 컨테이너를 생성함.
도커는 read-write 파일시스템을 컨테이너에 할당함.
도커가 container를 실행하고 /bin/bash를 실행함.
없으면 멈추는게 아니라 도커가 알아서 해줌!