우리가 일반적으로 설치하게되는 Docker 패키지는 “docker-ce
” 입니다.
데비안 계열에서는 “docker.io
“라는 패키지가 따로 존재해서, 이 둘의 차이가 무엇인지 궁금해서 찾아서 정리해봤습니다.
이 둘은 크게 빌드 프로세스와 종속성을 처리하는 방식에 차이가 있습니다.
Docker 패키지
Docker는 크게 “docker-ce”와 “docker.io” 두가지 패키지가 존재 합니다.
docker-ce
- “docker.com” 에서 직접 제공되는 인증된 릴리스 입니다.
docker.io
- Debin/Ubuntu 공식 레포지토리에서 제공되는 릴리스 입니다.
docker.io 탄생배경 및 차이점
데비안에서 “docker.io” 패키지를 독자적으로 가지게된 이유는, 기존에 사용되던 “docker-ce” 패키지의 접근 방식이 데비안의 철학과 반대되었기 때문입니다.
“docker-ce”는 업데이트 시 모든 종속성과 함께 한번에 업데이트 됩니다. 이렇게 되면 많은 메모리를 소모할 뿐만 아니라 한번에 업데이트된 여러 라이브러리들에 어떤 보안 취약점이 존재하는지 판단하는 것이 어렵게 됩니다.
또한 go lang으로 종속성이 관리되는 “docker-ce”는 마이크로 패키징으로서, 모든 단일 종속성을 패키징 하는데, 이는 장기적으로 유지보수 비용을 증가시킨다고 합니다.
반대로 이러한 docker-ce의 장점은 모든 종속성이 한번에 업데이트 되기때문에 라이브러리끼리 호환성 문제가 발생할 가능성이 적습니다.
Package | Method | Description |
---|---|---|
docker-ce | Go | 빌드 전에 모든 종속성을 소스 트리 로 가져 오고 이후에 전체가 하나의 단일 패키지를 형성합니다. 따라서 항상 Docker를 모든 종속성과 함께 한번에 업데이트합니다. |
docker.io | Debian or Ubuntu | 각 외부 종속성은 독립적으로 업데이트될 수 있는 별도의 패키지입니다. |
더 자세한 정보가 필요하신 분들은 아래 References를 참고하시길 바랍니다.