개요

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. Docker는 가상의 운영체제 환경을 ChrootOverlayfs 그리고 Cgroup을 통해서 구현하는 컨테이너라는 환경을 쉽고 빠르게 사용자에게 제공하는 환경을 제공한다. 도커는 매우 가벼운 환경을 제공함으로서, 굉장히 빠르게 Application들이 작동할 수 있도록 한다. 예를 들어서 I/O와 같은 경우에는 VM은 추가적인 Overhead가 발생하여 Latency에 심한 영향을 받지만 Docker는 Security check말고는 그대로 Host VFS시스템을 타고 내려가기 때문에 굉장히 빠르게 작동한다. (Virtio와 같은 기술도 Latency측면에서 25%정도가 대다수나 Docker는 거의 Host와 비슷한 성능을 제공한다.

그러나 VM과는 다르게 Docker의 TCB가 큰점, Container환경이 Attacker에게 공격당하면 바로 Host로 이어지는 점들은 보안측면에서는 VM보다 약하다고 할 수 있다.

명령어

이미지

  • 새로운 이미지를 기존 Docker instance로부터 생성한다.
docker commit <name or id>
  • 이미지를 Tar로 내보낸다.
docker save -o <image name.tar> <name or id>
  • 내보내진 이미지 Tar로부터 이미지를 가져온다.
docker load -i <image name.tar>