-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
-야물파일에는 이미지 종류별로 하나씩만 있으면됨.
[root@www nginx]# docker-compose up -d --scale server_a=5 --scale server_b=10
[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 [옵션]
[root@www nginx]# docker-compose up -d --scale server_a=2 --scale server_b=2
컨테이너 상태 확인
- docker-compose up -d --scale server_a=2 --scale server_b=2
- docker-compose logs ( 상태 확인 )
- -f 옵션 : 로그 연속적으로 출력
- -t : time
- ex) docker logs -f 83269677f19c
-모두 삭제 후 다시 동작
-컨테이너 진입
컴포즈 실행
- docker-compose up -d
- docker ps -a
/top /pause(unpause) /port
-여러개의 컨테이너를 강제로 정지 / 삭제 할때 사용
-컨테이너 삭제
컴포즈 실행, 중지, 상태 확인
- 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 를 사용해서 구축
2.웹서버 3대 ( web1, 2, 3 )
여러개의 웹서버 역할을 수행하는 컨테이너 생성 및 최적화 구축
- 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 생성

[root@www nginx]# vi haproxy.cfg

-haproxy 는 로드밸런서에 최적화된 이미지.[ global, defaults, frontend , backend , listen 으로 구성]
HAProxy 관련 파일명.cfh 생성
- mkdir haproxy && cd haproxy
- vi haproxy.cfg
- "global" 섹션은 전역 설정을 정의하며, "stats socket" 및 "log"와 같은 설정
- "defaults" 섹션은 기본 설정을 정의하는 곳으로, HTTP 모드와 타임아웃 등이 설정
- "frontend" 섹션은 클라이언트 요청을 받아들이고, "stats" 및 "myfrontend"라는 두 가지 프론트엔드가 정의
- "stats" 프론트엔드는 HAProxy 통계를 제공하고, "myfrontend"는 실제 요청을 처리하는 데 사용
- "backend" 섹션은 실제 서버를 정의하고, 서버별로 이름, 주소, 포트, 상태 확인 등이 설정

⇒ 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 삭제 / 네트워크 삭제

⇒접속이 안되면 아래와 같이 28번 행 수정 후 다시 실행 / 접속 테스트
yml 파일로 haproxy 실행
- docker-compose.yml 작성
-컨테이너 가동 / 확인
-접속 테스트
haproxy 접속 확인
- main에서 localhost로 접속
- 새로고침하면 컨테이너id가 바뀌는 모습 확인
- docker1에서 10.0.2.15:8404로 접속
- 주기적으로 새로 고침되면서 정보가 바뀌는 모습 확인

-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 접속 확인
-서비스 삭제
*마인크래프트 설치
마인크래프트 서버 접속 파일 작성
- mkdir mine && cd mine
- vi docker-compose.yml
- Minecraft 서버를 실행하기 위한 설정
- docker-compose up -d
마인크래프트 접속 후 서버 생성 및 접속 확인
- 마인크래프 다운로드 (기타)
- tar xvfz Minecraft.tar.gz ( 압축 풀기 )
- 마인크래프트 접속 후 서버 생성( localhost:25565 ) 하고 접속하기
- 접속확인
도커 정리
도커 설치
컨테이너 이름 변경 , 컨테이너 안으로 파일 복사 ,
도커 컴포즈 설치 , 야물파일 생성 , 수정