Linux란?
네트워크 OS(Operation System)로써, 모든 소스가 오픈되어 있어 광범위하게 사용되어 지고 있다.
Window와는 다르게, 개발자들이 많이 사용하고 있는 운영체제
리눅스의 구조
1. 커널(Kernel)
하드웨어 제어, 프로세스 관리, 메모리 관리, 파일시스템 관리등의 컴퓨터에서 핵심이되는 기능들을 수행하는 운영체제의 핵심이다. (항상 실행되며 컴퓨터의 제어를 담당)
2. 쉘(Shell)
사용자의 명령어를 해석하여, 커널을 실행시키는 프로그램으로 사용자와 커널간의 인터페이스 역할을 한다.
3. 응용프로그램(Application)
대표적인 응용프로그램으로 Vi에디터가 있는데, 문서를 편집하거나 프로그래밍의 개발도구로 사용되어 진다.
Docker란?
리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다. - 출처 : 위키백과
도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.
쉽게 말해서,
개발자가 웹사이트를 개발하면, 그것은 서버 컴퓨터를 통해서 유저들에게 배포가 된다.
그 과정에서 개발할 때의 환경과 서버 컴퓨터의 환경을 일치시켜야 한다.
예를 들어서, 개발할 때에는 Python 2버전으로 했는데, 서버 컴퓨터에는 Python 3버전으로 설치되어있으면, 원활하게 실행 되지 않을 수 있다.
이러한 불상사를 막기위해, 서로 다른 두 컴퓨터의 환경을 동일시 할 필요성이 있는데, 시간이 많이 걸리고 복잡한 과정이다.
이러한 귀찮은 과정을 docker를 사용하게 되면 해결이 되는 것이다.
개발자 컴퓨터에서 개발에 필요한 모든 환경을 docker에 image의 형태로 저장을 하면, 서버 컴퓨터에서 docker을 통해 그 image를 가지고 똑같은 환경을 다운 받아서 사용할 수 있는 것이다.
Docekr 용어
컨테이너(container)
컨테이너(Container)는 개별 Software의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다. 컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다.
이미지(image)
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable). 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장됩니다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다.
Docker 용어 출처
https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/
Docker는 어떻게 보면, 가상화 기술과 비슷하다고 볼 수 있다.
Docker 나 가상화기술이나 개별 실행에 필요한 환경을 독립적으로 운용할 수 있도록 도와주는 기술이다.
차이점
가상화에서는 하이퍼바이저라는 논리적인 플랫폼위에 서로다른 OS를 올려놓아 독립적인 환경을 구성함
여러개의 OS를 운용하기 때문에 부담이 많이 간다.
Docker는 컨테이너라는 독립적인 공간을 이용하는데, 이것은 새로운 OS를 직접 올리는 것이 아니기 때문에 부담이 적다.
위에 나왔듯이 image형태로 쉽게 만들고 컨테이너를 복사해 낼 수 있기 때문에 운용이 쉽다.
'IT 공부 > Docker' 카테고리의 다른 글
[ Docker ] Image 저장소에 push 하기 (0) | 2021.12.27 |
---|---|
[ docker ] WordPress 환경 구축하기 (0) | 2021.12.27 |
[ docker ] Linux환경(ubuntu)에서 git 설치 및 사용 (2) | 2021.05.29 |
[ Docker ] - Nginx를 이용해서 웹서버 실행하기 (0) | 2021.05.28 |
[ Docker ] 자주쓰이는 명령어 모음 (0) | 2021.05.25 |