Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Vargrant는 VM기술을 활용하여 OS선택하고 스펙을 정의할수 있으며 구축형일때  유용하게 활용할수 있습니다.

AWS 클라우드를 이용한다고 하면 EC2를 준비할수 있는단계와 동일합니다.

둘다 원하는 OS서버 스펙을 정의하고 제공받을수 있는 프로비저닝(Provisioning) 단계입니다.


도커 구동을 위한 VM 환경

파일구조

/docker1/Vagrantfile     - 192.168.56.201

/docker2/Vagrantfile     - 192.168.56.202

/docker3/Vagrantfile     - 192.168.56.203

복수개의 도커를 위한 VM을  위와같은 구조로 File을 생성합니다. 각각의 VM은 가상의 Private 네트워크및 Public 네트워크를 이용할수 있습니다.

그리고 자신의 PC환경에는 도커와 관련된 어떠한 툴 설치없이 오로지 VM내부에서만 진행될 예정입니다.

여기서의 샘플은 VM을 이용하 복수개의 서버인스턴스를 구성하는 샘플이며  클라우드를 이용한다고하면 Vagantfile은 AWS-EC2에 해당하며 클라우드로 구성한다고해도 동일한 컨셉으로 이용이 가능하며 ASW-EC2 추가를 지원도 합니다.


특정 vm(virtual box)을 선택했다고하면 다음과 같은 vm의 추가옵션을 사용할수 있는 플러그인을 설치합니다.

vagrant plugin install vagrant-vbguest --plugin-version 0.21


구동파일

Code Block
titleVagrantfile
Vagrant.configure("2") do |config|
  config.vbguest.auto_update = false
  config.vm.box = "kleesc/coreos"
  config.vm.hostname = "docker1"
  config.vm.network "private_network", ip: "192.168.56.201"
  config.vm.network "public_network", ip: "192.168.0.80"
  config.vm.provider "virtualbox" do |vb|
     vb.memory = "2048"
  end
end


Vagrant의 장점은 준비된 OS를 선택하여 VM환경에서 프로비저닝 할수 있습니다. 

  • kleesc/coreos
  • kleesc/coreosubuntu/bionic64
  • kwilczynski/ubuntu-20.04-docker



간단하게 살펴본 크기순서 디펜던시입니다.

  • Host(물리컴퓨터) > 물리 OS > VM > VMOS > 도커가상화 > 도커 컨테이너
  • Host(물리컴퓨터) > 도커 가상화 > 도커 컨테이너

도커 가상화를 위해 VM이 꼭 필요한것은 아니지만, 여기서는 첫번째 방법으로 연습이진행됩니다.(적어도 여러 EC2를 사용한다고 가정)

Expand
title다른OS의 Docker가필요한경우

다른 조합의 OS+Docker가 필요한경우 : https://app.vagrantup.com/boxes/search


OS의 Size는 곧 비용이다.  Core OS는 도커 가상화기술을 사용할수 있는 최적화된 경량화된 OS이다.   




파일을 위와같이 작성을 한후, Vagrantfile을 가지고 있는 디렉토리내에서 VM 컨트롤이 가능합니다.

주요 명령 요약

  • vagrant up : vm을 구동시킨다.
  • vagrant ssh : ssh접속
  • vagrant halt : vm 중지
  • vagrant reload : vm 재시작
  • vagrant destroy : vm 삭제



Code Block
themeEmacs
titlevagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'kwilczynski/ubuntu-20.04-docker' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'kwilczynski/ubuntu-20.04-docker'
    default: URL: https://vagrantcloud.com/kwilczynski/ubuntu-20.04-docker
==> default: Adding box 'kwilczynski/ubuntu-20.04-docker' (v0.1.1) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/kwilczynski/boxes/ubuntu-20.04-docker/versions/0.1.1/providers/virtualbox.box
Download redirected to host: vagrantcloud-files-production.s3-accelerate.amazonaws.com
    default: Calculating and comparing box checksum...
==> default: Successfully added box 'kwilczynski/ubuntu-20.04-docker' (v0.1.1) for 'virtualbox'!
==> default: Preparing master VM for linked clones...
    default: This is a one time operation. Once the master VM is prepared,
    default: it will be used as a base for linked clones, making the creation
    default: of new VMs take milliseconds on a modern system.
==> default: Importing base box 'kwilczynski/ubuntu-20.04-docker'...
==> default: Cloning VM...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'kwilczynski/ubuntu-20.04-docker' version '0.1.1' is up to date...
==> default: Setting the name of the VM: docker1_default_1682824169580_70976
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) enp1s0f0
2) docker0
3) veth34ef55e
4) vetha664839
5) vethrd1950fa082
6) vethr9717e7bb98
7) vethr58070fba63
8) vethr05e74b7144
9) vethrad400661b5
10) vethr5b82529cc4
11) vethr2fc719c621
12) vethrf1bc8f62fc
13) vethre515607d4e
14) vethrb272d8eda7
15) vethr36b78e5a3f
16) vethr8d18704b7c
17) veth5575467
18) vethr01e0126ef1
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
==> default: 
    default: Which interface should the network bridge to? 1
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...




참고링크: