목표
Virtualbox을 활용한 Docker Window 환경 구축
컨테이너
컨테이너는 애플리케이션과 그에 필요한 모든 종속성을 패키지로 묶어 환경을 격리하고 이식성 있게 실행할 수 있는 가상화 기술입니다. 이러한 기술은 애플리케이션을 호스트 시스템과 독립적으로 유지하면서 효율적으로 배포하고 실행할 수 있게 해줍니다.
컨테이너는 리눅스 커널 기반으로 동작
컨테이너는 리눅스 커널 기반으로 동작하며, 여러 가지 리눅스 기능과 기술을 이용하여 격리 및 가상화를 구현합니다. 몇 가지 주요한 기능에 대한 설명은 다음과 같습니다:
- chroot : chroot는 파일 시스템 내의 특정 디렉토리를 기준으로 독립된 파일 시스템 트리를 형성하는데 사용됩니다. 컨테이너에서는 chroot를 통해 애플리케이션이 해당 디렉토리를 루트로 간주하도록 하여 파일 시스템을 격리합니다. 이는 애플리케이션과 그 종속성을 다른 환경에서 실행할 수 있도록 도와줍니다.
- Namespace: 네임스페이스는 프로세스의 격리를 담당하는 기술이며, PID 네임스페이스, 네트워크 네임스페이스, 마운트 네임스페이스 등이 있습니다. 각각의 컨테이너는 독립된 프로세스 공간, 네트워크 환경, 파일 시스템을 가지게 되어, 서로 간섭하지 않고 독립적으로 실행될 수 있습니다.
- cgroup: cgroup은 리눅스 커널에서 자원을 효율적으로 관리하기 위한 기술입니다. 각 컨테이너는 cgroup을 통해 CPU, 메모리, 디스크 I/O 등의 자원을 할당받아 사용하게 되어, 호스트 시스템의 자원을 효율적으로 활용할 수 있습니다.
Hypervisor
가상화 기술을 사용하여 여러 개의 가상 머신(VM, Virtual Machine)을 호스트 시스템에서 동시에 실행할 수 있게 해주는 소프트웨어 또는 하드웨어입니다. 이 기술은 물리적인 컴퓨터 리소스를 가상 머신으로 추상화하여 여러 운영 체제 및 응용 프로그램이 동시에 실행될 수 있도록 지원
1. Hypervisor 설치하기
1.1 VirtualBox 설치
- https://www.virtualbox.org/ 링크 접속
- Downloads 클릭 > VirtualBox 7.0.12 plaform packages
- 자신에 맞는 OS에 맞게 설치 ex) Windows hosts, macOS/Intel hosts
1.1 VirtualBox 다운로드 완료 후, 화면

2. VirtualBox Network
2.1 설치 된 VirtualBox 열기
2.1 NAT 네트워크?
- NAT(Network Address Translation)
- 네트워크에서 사용되는 주소 변환 기술 중 하나입니다. NAT는 주로 여러 컴퓨터가 하나의 공인 IP 주소를 공유할 수 있게 해주는 방법으로 사용됩니다.
- VirtualBox에서 NAT 네트워크를 설정하면, 가상 머신은 호스트 컴퓨터의 네트워크에 연결되지만 가상 머신 내의 각각의 네트워크 인터페이스는 동일한 IP 주소를 가지며 호스트와는 분리된 내부 네트워크를 형성합니다. 이 방식으로 여러 개의 가상 머신이 호스트의 공인 IP 주소를 사용할 수 있습니다.
- 가상 머신이 인터넷에 연결되는 경우, 호스트 컴퓨터의 IP 주소를 사용하여 외부와 통신합니다. 이때 가상 머신의 IP 주소는 호스트의 IP 주소와 다르게 설정되어 있습니다. NAT는 주소 변환을 통해 가상 머신과 호스트 간의 통신을 관리합니다.
- NAT를 사용하면 가상 머신이 외부 리소스와 통신할 수 있고, 동시에 호스트 컴퓨터의 IP 주소를 숨기고 보안상의 이점을 얻을 수 있습니다.
2.2 네트워크 구성
- 도구 우측에 햄버거 모양에 아이콘 클릭
- 아래의 이미지와 동일한 화면이 출력됨
- 서브 메뉴 중 네트워크가 있는지 확인 필요

2.2.1 네트워크 서브 메뉴 클릭 > " NAT 네트워크 " > "만들기" 클릭

2.2.2 이름 "NatNetwork" 클릭 > 마우스 우 클릭 > 속성 클릭

2.2.2 일반 옵션 변경 > 네트워크 이름 변경
가상 머신이 사용하는 네트워크 식별자 이름 변경
NatNetWork -> LocalNetwork
2.2.3 네트워크 CIDR 변경
10.100.0.0/24
- CIDR(Classless Inter-Domain Routing)
- 인터넷상의 데이터 라우팅 효율성을 향상시키는 IP주소 할당 방법. 인터넷에 연결되는 모든 컴퓨터, 서버 및 최종 사용자 디바이스에는 IP주소라는 고유한 번호가 연결되어있다. 디바이스는 이러한 IP 주소를 사용하여 서로 찾고 통신한다. CIDR을 사용하여 네트워크에 유연하고 효율적으로 IP 주소를 할당한다
- CIDR 표기법 ex) 10.100.0.0/24
- CIDR 표기법은 IP 주소와 서브넷 마스크를 조합하여 네트워크의 주소 범위를 나타냅니다. 예를 들어, "10.100.0.0/24"의 CIDR 표기법에서 "/24"는 서브넷 마스크를 나타냅니다. 이 경우, 24비트가 네트워크 주소 부분을 나타냅니다.
IP 주소는 일반적으로 32비트로 표현되며, 이를 4개의 8비트로 나누어 각각을 10진수로 변환하여 표기합니다. 예를 들어, "10.100.0.0"은 32비트 IP 주소 중 앞의 24비트가 네트워크 주소이고, 나머지 8비트가 호스트 주소입니다.
CIDR에서 "/24"는 네트워크 주소 부분이 24비트라는 것을 나타냅니다. 따라서 "10.100.0.0/24"는 네트워크 주소가 "10.100.0.0"이고, 이 네트워크에서 사용 가능한 IP 주소 범위는 "10.100.0.1"에서 "10.100.0.254"까지입니다. 마지막 주소는 보통 네트워크 주소와 게이트웨이로 사용되므로 호스트에 할당되지 않습니다.
- CIDR 표기법은 IP 주소와 서브넷 마스크를 조합하여 네트워크의 주소 범위를 나타냅니다. 예를 들어, "10.100.0.0/24"의 CIDR 표기법에서 "/24"는 서브넷 마스크를 나타냅니다. 이 경우, 24비트가 네트워크 주소 부분을 나타냅니다.
2.2.4 네트워크 옵션 변경
- DHCP 지원 [v] -> 체크
- IPv6 지원 [] ->해제
- DHCP 지원
- DHCP(Dynamic Host Configuration Protocol)를 통해 가상 머신에 자동으로 IP 주소를 할당된다
- 체크 시, 가상 머신은 자동으로 IP 주소, 서브넷 마스크, 게이트웨이 등을 받게 됨
- DHCP(Dynamic Host Configuration Protocol)를 통해 가상 머신에 자동으로 IP 주소를 할당된다
- IPv6 지원
- IPv6는 다음 세대의 인터넷 프로토콜로, 현재는 아직까지 보편적으로 사용되지 않고 있음, 이 설정에서는 IPv6 지원을 사용하지 않도록 선택

2.2.5 포트 포워딩 변경
이름 | 프로토콜 | 호스트IP | 호스트포트 | 게스트IP | 포스트포트 |
docker1 | TCP | 127.0.0.1 | 105 | 10.100.0.105 | 22 |
docker2 | TCP | 127.0.0.1 | 106 | 10.100.0.106 | 22 |
- 포트포워딩
- 포트포워딩 은 네트워크에서 사용되는 중요한 개념 중 하나로, 네트워크 트래픽을 특정한 포트에서 다른 포트로 전달하는 기술
- 호스트의 127.0.0.1:105로 들어온 트래픽을 가상 머신의 10.100.0.105:22로 전달
- 호스트의 127.0.0.1:106으로 들어온 트래픽을 가상 머신의 10.100.0.106:22로 전달

3. VirtualBox 구성 완료.
참고
[따배도] 2. 도커 설치하기 - 학습편(준비물/실습 유형 소개)
https://www.youtube.com/watch?v=6S4CXKt6ibE&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=3
[따배도] 2-1. 도커 설치하기: Virtualbox 설치 / VM 생성
https://www.youtube.com/watch?v=PqgWp7rbqws&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=4
'Docker' 카테고리의 다른 글
[Docker] 로컬 환경 구성 5 - Ubuntu Docker 설치 (0) | 2024.02.05 |
---|---|
[Docker] 로컬 환경 구성 4 - CentOS 설치 (0) | 2024.02.05 |
[Docker] 로컬 환경 구성 3 - Ubuntu 설치 (1) | 2024.02.05 |
[Docker] 로컬 환경 구성 2 - 가상 머신 생성 (0) | 2024.02.05 |
[Docker] 명령어 (0) | 2023.12.04 |