Docker- 8

박형준·2024년 5월 3일

-docker-compose.yml 파일 수정

[root@www nginx]# vi ~/.bashrc

vi ~/.bashrc (alias 설정)

  • docker-compose 관련 명령어 설정

yaml 파일 작성 ( 이미지를 통해 컨테이너 생성 )

  • nginx와 redis를 통해 컨테이너 생성
  • docker-compose up -d
    • 도커 컴포즈 실행 후 yaml파일 확인 가능 ( docker-compose config )
    • docker-compose ps -a

동작 시키고, docker ps -a, 컨테이너 진입, 네트워크 확인 , 볼륨 확인
#docker-compose down -v

컨테이너 생성 확인 후 컨테이너 진입

  • docker exec -it nginx-server_a-1 /bin/bash

볼륨과 네트워크 연결 확인

  • docker volume ls
  • docker network ls

*스케일 아웃 (scale out)으로 다중 컨테이너 실행 시키기

-야물파일에는 이미지 종류별로 하나씩만 있으면됨.

  • [root@www nginx]# docker-compose up -d --scale server_a=5 --scale server_b=10

    • [root@www nginx]# docker-compose ps -a
      [root@www nginx]# docker ps -a
    • ⇒ 컨테이너 하나 랜덤으로 선택 해서 진입 해보기
  • [root@www nginx]# docker-compose ps -a | grep -w server_a
    [root@www nginx]# docker-compose ps -a | grep -w server_a | wc -l

  • [root@www nginx]# docker-compose ps -a | grep -w server_b
    [root@www nginx]# docker-compose ps -a | grep -w server_b | wc -l

scale을 통해 여러개의 컨테이너를 동시에 생성

  • --scale 옵션을 활용해서 server_a와 server_b를 여러개 생성
  • docker-compose ps -a
  • docker-compose ps -a | grep -w server_a | wc -l ( server-a 갯수만 확인 )

-모두 down 시키고 상태 확인 ps, volume , network 해보면 ps 와 network는 정리가 되지만, 볼륨은 남아 있음

  • 볼륨을 깨끗하게 삭제는 [root@www nginx]# docker volume prune -f

  • [root@www nginx]# docker ps [옵션]

    • -a (all) : 모든 컨테이너 보여줘
      -q : 컨테이너 ID만 보여줘, -aq
    • --format : 출력형식 지정.
      ex) [root@www nginx]# docker-compose ps --format json

[root@www nginx]# docker-compose up -d --scale server_a=2 --scale server_b=2

  • #docker-compose logs [옵션] [컨테이너ID]
    • f ( follow ) : 로그 출력이 계속이루어짐.
    • t (time ) : 타임 스탬프 출력
  • #docker container logs -t 4ef3bd9d54b6

컨테이너 상태 확인

  • docker-compose up -d --scale server_a=2 --scale server_b=2
  • docker-compose logs ( 상태 확인 )
  • -f 옵션 : 로그 연속적으로 출력
  • -t : time
  • ex) docker logs -f 83269677f19c

-모두 삭제 후 다시 동작

  • #[root@www nginx]# docker-compose up -d

-컨테이너 진입

  • #docker exec -it 컨테이너ID /bin/bash ⇒ exit

컴포즈 실행

  • docker-compose up -d
  • docker ps -a

-컨테이너 시작(start) / 중지(stop) / 재시작(restart)

/top /pause(unpause) /port

  • [root@www nginx]# docker-compose port webserver 80
    • ⇒ webserver 컨테이너에 80포트에 할당된 내역 확인

-여러개의 컨테이너를 강제로 정지 / 삭제 할때 사용

  • [root@www nginx]# docker-compose kill -s SIGINT

-컨테이너 삭제

  • #docker-compose rm ⇒ 제거 과정 확인
    #docker-compose rm -f ⇒ 확인과정 없이 무조건 삭제 -force
  • #docker-compose down

컴포즈 실행, 중지, 상태 확인

  • docker-compose stop
  • docker-compose start
  • docker-compose restart
  • docker-compose top ( PID와 PPID(부모 프로세서 아이디) 확인 )
  • docker-composer pause ( 동작은 unpause )
  • docker-compose port ( 포트 확인 )
  • docker-compose kill -s SIGINT ( 강제 정지 / 삭제 , -s: 시그널 송신, SIGINT: 시그널)
  • docker-compose rm / docker-compose rm -f ( 삭제 )

-여러개의 웹서버역할을 수행하는 컨테이너를 생성 하고 로드밸런서 역할을 구축

로드밸런서는 HAProxy 를 사용해서 구축

  1. mynetwork 라는 이름의 네트워크 생성 / 확인
  • [root@www nginx]# docker network create mynetwork
    • [root@www nginx]# docker network ls

2.웹서버 3대 ( web1, 2, 3 )

  • [root@www nginx]# docker run -d --name web1 --net mynetwork jmalloc/echo-server
    [root@www nginx]# docker run -d --name web2 --net mynetwork jmalloc/echo-server
    [root@www nginx]# docker run -d --name web3 --net mynetwork jmalloc/echo-server
    • [root@www nginx]# docker ps -a

여러개의 웹서버 역할을 수행하는 컨테이너 생성 및 최적화 구축

  • docker network create mynetwork
  • docker network ls
  • docker run -d --name web1 --network mynetwork jmalloc/echo-server
  • docker run -d --name web2 --network mynetwork jmalloc/echo-server
  • docker run -d --name web3 --network mynetwork jmalloc/echo-server
  • docker ps -a

-HAProxy 관련 파일명.cfg 생성

  • haproxy/examples at master · haproxy/haproxy · GitHub (참고)

[root@www nginx]# vi haproxy.cfg

-haproxy 는 로드밸런서에 최적화된 이미지.[ global, defaults, frontend , backend , listen 으로 구성]

  • global : 전체 영역에 해당되는 설정 담당
    • defaults : frontend , backend , listen에 적용되는 내용 담당.
      • frontend : 클라이언트 연결 관련된 설정(포트설정)
      • backend : 위에서 진행되어서 오는것들 연결시켜주는 프록시 서버들에 대한 설정.
      • listen : frontend , backend 한번에 설정할때 사용되는 TCP로 설정.

HAProxy 관련 파일명.cfh 생성

  • mkdir haproxy && cd haproxy
  • vi haproxy.cfg
    • "global" 섹션은 전역 설정을 정의하며, "stats socket" 및 "log"와 같은 설정
    • "defaults" 섹션은 기본 설정을 정의하는 곳으로, HTTP 모드와 타임아웃 등이 설정
    • "frontend" 섹션은 클라이언트 요청을 받아들이고, "stats" 및 "myfrontend"라는 두 가지 프론트엔드가 정의
      • "stats" 프론트엔드는 HAProxy 통계를 제공하고, "myfrontend"는 실제 요청을 처리하는 데 사용
    • "backend" 섹션은 실제 서버를 정의하고, 서버별로 이름, 주소, 포트, 상태 확인 등이 설정
  1. 컨테이너 가동 및 확인
  • 8404:8404 가 한줄만 보이는 이유는 호스트에서 80번으로 요청시 8404를 통해서 web1,2,3 으로 LB 실행 하고 있음을 나타냄.

HAProxy 컨테이너 생성

  • HAProxy 이미지를 통해 컨테이너 생성 ( 미리 생성한 네트워크 지정, 볼륨 지정 )

⇒ main 에서 파이어폭스로 접속 http://localhost:80 ⇒ 컨테이너ID가 보이고, 새로고침하면 컨테이너ID가 변경됨 확인

⇒ docker-1에서 main으로 접속 http://10.0.2.15:8404 접속시 아래와 같은 haproxy 화면이 보임, 새로고침을 해보면 데이터 값이 변경되는것 확인 가능함.

haproxy 확인

  • main에서 localhost로 접속
  • 새로고침하면 컨테이너id가 바뀌는 모습 확인
  • docker1에서 10.0.2.15:8404로 접속
  • 주기적으로 새로 고침되면서 정보가 바뀌는 모습 확인

web1, 2, 3 중지 하고 삭제 / haproxy 삭제 / 네트워크 삭제

  • [root@www nginx]# docker stop web1 && docker rm web1
    [root@www nginx]# docker stop web2 && docker rm web2
    [root@www nginx]# docker stop web3 && docker rm web3
  • [root@www nginx]# docker stop haproxy && docker rm haproxy
  • [root@www nginx]# docker network rm mynetwork

*docker-compose.yml 파일을 이용한 테스트 ⇒ 기존 yml 파일 내용을 아래와 같이 수정

⇒접속이 안되면 아래와 같이 28번 행 수정 후 다시 실행 / 접속 테스트

  • ./:/usr/local/etc/haproxy/haproxy.cfg:ro

yml 파일로 haproxy 실행

  • docker-compose.yml 작성

-컨테이너 가동 / 확인

  • #docker-compose up -d
    #docker-compose ps -a
  • #docker network ls

-접속 테스트

haproxy 접속 확인

  • main에서 localhost로 접속
  • 새로고침하면 컨테이너id가 바뀌는 모습 확인
  • docker1에서 10.0.2.15:8404로 접속
  • 주기적으로 새로 고침되면서 정보가 바뀌는 모습 확인

*docker-compose.yml 파일을 간단하게 수정해서 테스트

-haproxy.cfg파일을 수정

docker-compose.yml 파일을 수정헤서 테스트 (간단하게)

  • vi docker-compose.yml ( web 서비스를 여러개 동작 시키기 )
  • vi haproxy.cfg ( backend webservers 수정, 생성하고자 하는 컨테이너 )
  • cp ./haproxy.cfg{,~} ( 파일 속성까지 복사 ( 백업 ) )

#docker-compose -f docker-compose.yml up -d --scale web=3

  • ⇒접속 테스트

컨테이너 실행

  • docker-compose -f docker-compose.yml up -d --scale web=3
  • 실행 후 haproxy 접속 확인

-서비스 삭제

  • docker-compose -f docker-compose.yml down -v

*마인크래프트 설치

마인크래프트 서버 접속 파일 작성

  • mkdir mine && cd mine
  • vi docker-compose.yml
  • Minecraft 서버를 실행하기 위한 설정
  • docker-compose up -d

마인크래프트 접속 후 서버 생성 및 접속 확인

  • 마인크래프 다운로드 (기타)
  • tar xvfz Minecraft.tar.gz ( 압축 풀기 )
  • 마인크래프트 접속 후 서버 생성( localhost:25565 ) 하고 접속하기
  • 접속확인

도커 정리

  • 도커 설치

    • 도커 허브, 도커 기술문서
    • 이미지 다운로드 / 삭제
    • 이미지를 이용하여 컨테이너 동작 [ 포트 연결 ] / 컨테이너 진입
  • 컨테이너 이름 변경 , 컨테이너 안으로 파일 복사 ,

    • 볼륨 생성 / 삭제
    • 컨테이너를 이용해서 이미지 생성 / 용량 줄이기
    • 도커 파일을 이용해서 이미지 빌드
  • 도커 컴포즈 설치 , 야물파일 생성 , 수정

    • 컨테이너 여러개 동작 관리

0개의 댓글