Docker

22.05.30

가로선 2022. 5. 30. 16:38

   목차   

 

1. IaC

 - IaC 정리

 - SW 설치(Vagrant)

2. VirtualBox

 - 설치 방법

 - IP 설정(오류해결)

3. Ubuntu

 - ISO파일 설치

4. 공유

 - 테스트를 위한 설정

 - cp 사용 공유

 - 볼륨 공유

 - 바인드 공유

5. 네트워크 드라이버

 - bridge

 - host

6. Object Storage

7. 문제풀이


 

   Iac(Infrastructure as Code)   

 

   IaC 정리   

 - 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것

 - HashiCorp가 1인자 이다

 - Vargrant : 간소화된 VM 관리 서비스

    - VMware, Virtual Box 등에서 수동으로 생성하던 것을 자동으로 생성이 가능하게 해줌

 - Terraform : 플랫폼을 가리지 않음(배포 관리 도구)
    - 배포 : (= 설치)
 - Ansible : 구성 관리 도구
    - RedHat에서 운영

 

   SW 설치   

 - Vagrant : https://www.vagrantup.com/

 

Vagrant by HashiCorp

Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.

www.vagrantup.com

    - 해당 사이트에서 설치 진행

 

 

   VirtualBox   

 

   설치 방법   

 - VirtualBox : https://www.virtualbox.org/wiki/Downloads

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

    - Windows 플랫폼이므로 Windows hosts 선택 후 설치 진행

    - VirtualBox 설치 및 확장패키지도 설치하여야 한다

 

확장패키지 설치 이유

 

새로운 네트워크 카드가 생긴 것을 확인

 

VDI를 저장할 폴더 지정

    - VMware에서 쓰던 VMDK와는 다르게 VirtualBox에서는 VDI이다

 

호스트 키 설정

    - ctrl+alt를 사용하여 Host PC쪽으로 마우스를 내보내던 Vmware와 같은 것

 

이름 지정 및 메모리 크기 설정

    - VMware Workstation에서의 설치방법과 다른 점이 없다

 

파일 크기 지정 및 하드 디스크 파일 종류 지정

    - VMDK로 지정하여 하드디스크 포맷만 맞춰 VMware에서 진행도 가능하다

 

CentOS7 이미지 삽입

 

인터넷이 가능하게 하기 위해 NAT카드가 이미 지정된 것을 확인

 

내부 통신을 위해 Host-Only 카드 추가

    -  VMware Workstation은 큰 NAT 카드 하나에 가상머신이 붙는 구조
        - 그래서 가상머신끼리도 통신이 되며 인터넷도 가능한 것

    - Virtual Box의 NAT카드도 인터넷을 위한 카드지만, 

        - VirtualBox는 각각의 가상머신에 NAT카드가 붙어서 가상머신끼리 통신 X
            - 통신 시키려면 내부네트워크 써야함
            - 실제 PC와 통신하려면 호스트 전용 어댑터 사용이 필요

 

   IP 설정   

 - VMware Workstation과 형식 똑같음

 - Host-Only 카드는 DHCP로 받아와도 되고 수동 설정해도 상관 x

 

NatNetwork 카드 추가

    - NAT로만 네트워크 설정했을 때, IP를 받아오지 못하는 오류 해결을 위한 조치

 

NAT에서 NAT 네트워크로 변경

    - 변경 후, 각각의 카드이름을 확인하고 IP 세팅 진행

 

NAT카드, HOST-ONLY카드 각각에 IP가 잘 받아진 것을 확인

    - 2개의 카드 모두 static으로 IP 설정하고 진행하였다

    - Host-Only 카드도 외부에서 접속되므로 Xshell에서 Host-Only 카드의 IP를 부여하여 접속

 

 

   Ubuntu   

 

   ISO파일 설치   

https://mirror.kakao.com/ubuntu-releases/16.04/

 

Ubuntu 16.04.7 LTS (Xenial Xerus)

Select an image Ubuntu is distributed on two types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what mos

mirror.kakao.com

    - 해당 위치에서 ubuntu-16.04.7-server-amd64.iso 설치 진행

 

 

   공유   

 - mysql의 DB 위치의 폴더를 로컬의 디렉터리랑 연결하여 DB 백업하기가 좋다
 - 여러 설정파일을 공유하기도 좋음(노가다가 필요 x)

 

   테스트를 위한 설정   

 

centos 이미지를 사용하여 c1 컨테이너 생성

 

배웠던 대로 httpd 패키지 설치 후 구동

    - 컨테이너에서는 단 하나의 프로세서만 사용할 수 있기 때문에 오류가 나는 것을 확인

        - 결국에는 pull을 통해 이미지를 당겨와 생성하는 수 밖에 없다

 

테스트를 위해 c2 컨테이너까지 생성

    - 루트 디렉터리에 test.txt 생성

 

   CP사용 공유   

 

c1 컨테이너에 cp를 통해 test.txt 가져오기

 

ls를 통해 확인

 

내용까지 제대로 옮겨진 것을 확인

    - 컨테이너 내부로 진입하여 확인도 가능하나 이 방법을 추천

 

   볼륨 공유   

 - 컨테이너를 생성하면서 공유

    - 카피는 컨테이너 실행 후 공유하는 것이므로 다른 것을 알자!

 - 볼륨이 저장되는 경로는 /var/lib/docker/volumes 이다

 - Docker에서는 이 방식을 추천한다

 

볼륨 저장 경로 확인

 

docker volume의 사용 커맨드 확인

 

create를 통해 babo라는 이름의 볼륨 생성

 

컨테이너 생성시 볼륨도 같이 지정하여 생성

    - v 옵션을 통해 생성한 볼륨으로 지정

        - 컨테이너에는 디렉터리 없어도 저절로 생성이 된다

    - babo라는 볼륨을 컨테이너의 babo 디렉터리에 마운트한다는 내용

 

볼륨 공유 테스트를 위해 babo.txt 생성

    - babo.txt를 cp를 통해 c3의 babo 디렉터리로 복사

 

볼륨이 저장되는 경로에도 똑같이 babo.txt가 만들어지는 것을 확인할 수 있다

 

볼륨 리스트 확인

 

inspect을 통해 상세정보 확인도 가능

 

볼륨도 마찬가지로 rm을 사용하여 삭제

    - 볼륨 공유가 설정된 컨테이너 삭제 후, 볼륨 삭제가 가능하다

 

   바인드 공유   

 - 볼륨 공유 사용법과 동일하나 반드시 절대경로로 지정해야 한다

    - 절대경로로 설정하지 않게되면, 볼륨이 저장되는 위치에 생성이 된다

 - 임의의 디렉터리를 도커 컨테이너와 공유할 수 있다

 

v 옵션을 사용하여 공유 디렉터리 지정

    - 절대경로로 꼭 작성해줘야 한다

 

babo1 디렉터리에 txt파일 생성

    - 생성한 txt 파일이 컨테이너 내부에서도 생성이 된 것을 확인

 

 

   네트워크 드라이버   

 

   Bridge   

 

test1, 2 라는 이름의 네트워크 카드(bridge) 생성

 

생성한 네트워크 카드인 test1 사용하여 c2라는 이름의 centos7 이미지 파일을 사용한 컨테이너 생성

    - c1은 기본 네트워크, c2는 test1, c3는 test2를 사용하게 설정하여 컨테이너 생성

 

생성한 네트워크 카드들의 ip 확인

 

생성한 컨테이너들이 어떤 네트워크 카드를 사용하는지 확인 가능

 

c1의 할당받은 ip 확인

 

c2의 할당받은 ip 확인

 

c3의 할당받은 ip 확인

 

   Host   

  - 아이피도 없고 아무것도 안보임
  - 호스트 피시 아이피와 동일 아이피 사용
    - 그래서 1대밖에 못씀(여러개 사용 X)

 

 

host 네트워크 카드를 사용하는 h2 컨테이너 생성

 

IP 설정도 되어있지 않는 것을 확인

 

브릿지 네트워크 카드 사용할 때에 반해 포트포워딩이 필요없는 것을 확인

 

접속 확인

 

 

   Object Storage   

 - 네이버 클라우드 플랫폼 서비스

 - Rest API 지원(개체별로 URL을 부여하여 사용이 가능)

 

Ncloud - Services - Storage - Object Storage 선택

 

이용한다고 설정 후, 버킷 생성 진행

    - 버킷 이름 지정

 

따로 설정할 필요없이 해제된 것 확인 후 다음

 

전체 공개 안함으로 설정 후 다음

 

Summary 확인 후 버킷 생성

 

버킷 선택 후, 미리 다운로드 한 그림 파일을 올린다

 

추가한 파일 선택 후 권한 관리에서 공개를 선택

 

상세정보에서 이미지파일의 링크 확인

 

index.html에서 추가

 

cp를 통해 index.html 바꾸기

 

이미지까지 추가된 웹페이지 확인

 

 

   문제풀이   

 

문제

 

문제에 주어진대로 네트워크 생성

    - n1, n2, n3, n4 생성

 

네트워크 카드 생성 확인

 

컨테이너 생성

    - 처음에는 포트포워딩까지 설정해야하는 줄 알았으나 proxy가 알아서 찾아

      들어가기 때문에 굳이 필요없다는 것을 알게 되었다

        - 내부 웹 서버의 IP를 알려줄 이유가 없다(보안상 매우 좋지 않다)

        - 프록시 주소만 까고 나머지는 비밀로!

 

ng1 컨테이너의 IP 확인

 

h1 컨테이너의 IP 확인

 

ng2 컨테이너의 IP 확인

 

h2 컨테이너의 IP 확인

 

Ncloud의 Object Storage 버킷에 준비한 이미지 파일들 추가

 

문제에 주어진 대로 각각의 index.html 수정 후 cp를 통해 설정

 

haproxy 설정

 

ng1 접속 확인

 

Refresh 후 h1 접속 확인

 

Refresh 후 ng2 접속 확인

 

Refresh 후 h2 접속 확인

 

상대방의 접속을 위해 포트포워딩 진행

 

상대방 pc에서 접속 확인

 

상대방 pc에서 접속 확인

 

상대방 pc에서 접속 확인

 

상대방 pc에서 접속 확인

    - HaProxy를 통해 로드밸런싱이 잘 이루어지고 있는 것을 확인할 수 있다

 

'Docker' 카테고리의 다른 글

22.06.01  (0) 2022.06.01
22.05.31  (0) 2022.05.31
22.05.27  (0) 2022.05.27
22.05.26  (0) 2022.05.26
22.05.19  (0) 2022.05.19