Docker(도커)란?
Docker란 한마디로 표현하면 경량화된 VM(virtual machine) 기술이라고 칭할 수 있습니다.
Docker는 OS 수준의 가상화를 사용하여, 컨테이너라는 패키지로 소프트웨어를 실행할 수 있게하는 플랫폼 집합입니다.
컨테이너를 호스트하는 소프트웨어는 Docker Engine이라고 불립니다.
Docker는 2013년에 처음 출시되었으며, Docker, Inc.에서 개발하였습니다.
도커는 애플리케이션이 격리된 다른 환경에서 효율적으로 작동할 수 있도록 합니다.
Docker 구동 구조
Docker는 아래와 같은 구조로 되어 있습니다.
Container
App A, B, C와 같이 실행하려는 소프트웨어와
Bins/Libs와 같이 실행하려는 소프트웨어를 위한 라이브러리및 필요한 연관 프로그램들이 패키징화 되어서 하나의 Container를 구성합니다.
Docker Engine
Container들은 각각 Docker Engine에 의해 구동이 됩니다.
Docker Engine은 container를 실행시키기 위해 Host OS 에 설치됩니다.
Host Operating System
일반적으로 컴퓨터위에 구동되는 OS입니다.
windows나 linux등이 있습니다.
Infrastructure
Hardware(CPU, Memory, Disk 등) 라고 생각하시면 됩니다.
Docker VS Virtual Machine
Virtual Machine을 아신다면
Docker와 Virtual Machine의 구조가 비슷하다고 생각하실 것입니다.
아래는 Docker와 Virtual Machine과의 구조 비교입니다.
Host Operating System과 HyperVisor는 동일합니다.
공통점은 둘다 가상환경을 만들어서 서로 영향을 미치지 않게 한다는 점입니다.
차이점을 설명하면 아래와 같습니다.
항목 | Container(Docker) | Virtual Machine |
가상화 대상 | app과 dependency들 | Operating System |
이미지 크기 | MB 단위 | GB 단위 |
항목Container(Docker)Virtual Machine
Docker 설치하기 & 실행하기
linux 계열에서 사용이 가능하며, 각 OS별 설치방법을 공유드립니다.
자세한 내용은 아래 url 에서 확인가능합니다.
https://docs.docker.com/engine/install/
대표적으로 centOS와 ubuntu는 아래와 같은 방식으로 설치가능합니다.
centOS
1. repository 추가
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2. docker engine, containered, docker compose설치
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. docker 실행
$ sudo systemctl start docker
4. hello-world 이미지를 실행하여 docker engine이 정상적으로 설치되었는지 확인
$ sudo docker run hello-world
ubuntu
1. repository 셋업
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2. docker 관련 패키지들 설치
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. 정상설치여부 확인 : hello-world 이미지를 실행하여 정상 설치여부확인
$ sudo docker run hello-world
Windows에서 Docker 사용하기
Docker는 원래 linux에서 사용가능한데,
WSL 기술을 통해 Windows에서도 사용가능합니다.
WSL은 windows에서 linux를 사용할 수 있게 해주는 가상화 기술입니다.
이를 통해 Windows에서 사용자가 원하는 Linux 환경을 구성하고,
그 환경에서 docker를 설치하시면 됩니다.
총평
처음 virtual box를 사용할떄가 기억나는데요,
os를 완전 격리된 환경에서 사용할 수 있었던게 굉징히 신기하고 혁신적이었다라고 생각을 했습니다.
다만, 속도가 느리고 용량이 너무 커서 불편한점이 있었는데, 이를 해결한 솔루션 docker가 나온것을 보고 또 한번 충격받았습니다.
그런데, 용량이 적어진건 실감이 되는데, 속도가 느린것은 그래도 layer가 더 있으니깐 좀 더 느린부분이 있지 않을까 생각이 됩니다.
속도가 정말 중요한 곳이라면 측정을 해봐야겠지만, 아직까지는 그런 case까지는 경험하지는 않았는데 무작정 docker 써야지라는 생각은 경계해야하지 않나라는 생각도 듭니다.
'개발용어' 카테고리의 다른 글
version naming, 버전 네이밍, version name convention, 버전 뜻, 버전 표시 규칙, 버전 표기법 (0) | 2024.08.10 |
---|---|
닷넷 vs 닷넷프레임워크 차이, .NET vs .NET Framework 차이 (1) | 2024.07.27 |
gRPC란, protobuf란, Java gRPC 예제 코드, grpc단점, grpc java code example (1) | 2023.06.05 |
DIME이란, DIME 예제 코드 Java, DIME 예제 코드 C#, MIME DIME 비교 (0) | 2022.10.16 |
디자인패턴 - 싱글턴 패턴, singleton pattern (0) | 2022.10.15 |
댓글