Docker란 무엇인가

Updated:

진행 환경
- Ubuntu 18.04
- docker version: 19.03
- CUDA & cuDNN 설치 가정

연구실에서 서버 및 도커를 사용할 기회를 주신 지도교수님께 무한한 감사를 드립니다 (DSBA lab)

Docker를 설차히고 사용하기 이전에 docker가 대체 무엇인지 간략하게 알아봅시다.

Docker

Fig 1. docker logo

Docker는 서버를 잘 관리하기 위해 개발된 플랫폼입니다.

개인적으로 큰 서버를 관리 및 사용을 해본적은 없지만 직관적으로 생각해도 OS부터 개발 환경까지 매우 다양한 변동성을 모두 관리하고 적응하여 사용하는 것은 큰 문제같습니다.

도커는 이러한 어려움을 완화하려 등장하였으며, Container의 사용으로 이를 구체화 하고 있습니다. 위의 이미지에서 고래를 Docker, 그 위에 쌓여 있는 것들을 Container라 부릅니다.

Container

Container는 프로세스를 실행하는 독립적인 공간입니다.

위의 문장을 보시면 아마 VirtualBox와 같은 가상머신이 떠오르실거라 생각됩니다. Docker가 기존의 가상머신과 다른점은 OS를 가상화 하지 않는다는 점입니다. OS를 가상화하여 Host OS위에 새로운 OS를 설치하는 기존의 방식은 매우 느리고 무거웠죠. 하지만 Docker에서는 container라는 개념을 사용하여 사용자에게 Host OS위에 독립적인 공간들을 제공합니다. 하나의 서버에서 여러개의 container를 실행시키더라도 서로 영향을 미치지 않고 독립적으로 실행됩니다.

Image

Docker에서 container와 함께 반드시 이해해야 하는 개념이 Image 입니다.

Image의 경우 Host OS위에서 내가 사용할 환경(container에서 사용할 설정값)을 구축한 말 그대로 이미지입니다. 앞서 말씀드린 container는 image위에 올라가게 되는데 기본적으로 image에서 설치한 library들을 가지고 있습니다. 개별 container에서는 image에서 가지고 있지 않는 환경을 추가적으로 구축할 수 있습니다.

아마 지금 와닿지 않는 개념들은 이후 설치를 알려드리는 포스트를 보시면 조금 더 이해가 쉬울 것 같습니다!

Leave a comment