Docker- 7

박형준·2024년 5월 2일

*웹서버 연동시켜보기

-기본 이미지 : centos7 ⇒ webimage(이미지 명) ⇒ myweb(컨테이너 명)

  • 1.베이스 이미지 다운로드 ( 도커파일 또는 일반 다운로드 )

    • #docker pull centos:7
  • 2.컨테이너 실행 하면서 진입

    • [root@www docker]# docker run -it --name web centos:7 /bin/bash
  • 3.httpd, php 설치

    • #yum -y install httpd php
  • 4.설치관련 파일 삭제 후 빠져 나오기

    • #yum clean all ⇒ exit
  • 5.index.html 파일 생성 ( 내용은 자유 )

    • #vi index.html
  • 6.info.php 파일 생성 내용 입력 ( php 연결 문구 )
    • #vi info.php
  • 7.index.html 과 info.php 파일을 묶음 ( 압축이 아님 ) 파일명은 scr.tar ( 소스란 의미 )

    • #tar cf scr.tar index.html infor.php
  • 8.scr.tar 파일을 컨테이너의 /var/www/html 로 복사

    • #docker cp scr.tar <컨테이너이름>:/var/www/html
  • 9.컨테이너 가동

    • #docker start <컨테이너 이름>
  • 10.컨테이너로 진입 후 쉘 실행 ⇒ /usr/sbin/httpd -D FOREGROUND 동작 확인되면

    • #docker exec -it web /bin/bash
    • #/usr/sbin/httpd -D FOREGROUND ⇒ 화면이 멈추면 동작 되고 있음 Ctrl + C 로 빠져나옴.
  • 11.exit

  • 12.도커 파일 수정(내용 추가)

    • #vi Dockerfile
  • 13.이미지 빌드시키기 (캐시메모리 사용안하는 방법으로 )

    • [root@www docker]# docker build --no-cache -t phpimage .
    • [phpimage 는 이미지 이름]
  • 14.기존 컨테이너 삭제

    • [root@www docker]# docker rm -f $(docker ps -aq)
  • 15.네트워크 추가 : phpnet

    • [root@www docker]# docker network create phpnet
  • 16.컨테이너 생성(이름: myphp )하면서 포트(80:80) 지정과 볼륨(/var/log/httpd) 지정 네트워크도 지정 ( phpnet ⇒ phpimage )

    • #docker ps -a 로 확인
  • 17.웹서버에 자체 접속 해보기 ( 파이어 폭스 )

  • 18.Docker-1에서 접속 테스트

    • 파이어 폭스를 이용해서 접속 ( 파이어 폭스 )
  • 19.메인 도커에서 모든 파일 삭제

    • 컨테이너 삭제 이미지 삭제, 네트워크 삭제, 볼륨 삭제(phpvol, logvol)

    • #docker rm -f myphp,
      #docker rmi phpimage
      #docker network rm phpnet
      #docker volume phpvol
      #docker volume logvol

    • #docker ps -a
      #docker image ls


*도커 컴포즈

*도커 컴포즈?

  • 장점:
    • 웹 관련 서비스를 테스트, 관리등을 할때 한꺼번에 여러개의 컨테이너를 관리 가능.
    • 이때 여러개의 컨테이너를 관리하는것이 도커 컴포즈

1.도커 컴포즈 설치

  • CentOS8 부터는 도커설치시 기본적으로 컴포즈가 설치됨
  • 의존성 때문에 컴포즈 플러그인 설치 및 확인
    • [root@www ~]#dnf list installed “docker *”
      [root@www ~]# rpm -ql docker-compose-plugin
      [root@www ~]# docker compose version

컴포즈 플러그인 설치 및 확인

  • docker 관련 설치 패키지 확인
  • docker 관련 설치 패키지 확인
  • docker compose 버전 확인

-도커 컴포즈 독립형 설치

  • https://docs.docker.com/compose/install/standalone/ ⇒ 설치 URL 복사 실행.
  • #curl -sSL
    • s: 진행상황,에러메시지 출력 하지 않음.
      S: 진행상황 출력되고, 에러메시지는 출력 안됨.
      L : 서버와 연결관련된것으로 리다이렉션 URL을 따라 감.

-docker-compos 에 실행권한 부여

  • [root@www ~]# chmod +x /usr/local/bin/docker-compose
    [root@www ~]# docker-compose version ⇒ v2.27.0

-파일 정보 추가 ⇒ ELF 64-bit (리눅스) / PE는 윈도우 운영체제를 나타냄.

컴포즈 독립형(test 용) 설치

  • docker 컴포즈 독립형 설치 , curl -sSL ( 다운로드 관련 옵션 : -sSL )
  • chmod +x /usr/local/bin/docker-compose ( 실행 권한 부여 )
  • docker-compose 파일 식별

[root@www docker]# mkdir compose && cd compose

-소스코드 다운로드

-도커 컴포즈 실행

  • [root@www chap07]# docker-compose up , [백그라운드로 실행은 -d ]

-실행 확인

  • #docker-compose ps

-접속 해보기

-컨테이너 정지

  • #docker-compose stop / down

소스코드 다운로드 후 도커 컴포즈 실행

  • mkdir compose && cd compose ( 파일 생성 후 진입 )
  • git clone https://github.com/asashiho/dockertext2 ( docker sample 다운 )
  • cd chap07 ( 챕터 07로 이동 )
    • docker-compose up [ 백그라운드 실행은 -d ]
    • #docker-compose ps (실행 확인)
    • http://localhost (접속)
    • #docker-compose stop / down ( 컨테이너 정지 / 삭제 )
    • 리소스 제거 ( 볼륨 )

1. YAML과 JSON 형식 비교

-야물파일 특징
*계층구조, 들여쓰기만 잘 맞춰주면됨 ( Tab 이 아닌 스페이스바 사용 )

  • *하위 항목은 상위 항목보다 항상 들여쓰기 적용
    • *배열은 맨 앞에 - 사용 , - 내용 ( -내용 = X )
    • *야물파일은 키-값 쌍으로 이루어져 있음

-파일명 4가지 형태

  • compose.yaml
    compose.yml
    test-compose.yaml
    test-compose.yml

-nginx, MongoDB, PostgreSQL 내용 확인 해보기

  1. 환경 설정 : vi 를 이용해서 야물파일 작성시 조금 유용하게 사용할 수 있도록.
  • [root@www ~]# vi ~/.vimrc

-alias 설정: .bashrc 파일 ⇒ 맨 아래 줄에 추가

  • [root@www ~]# vi $HOME/.bashrc

vi 설정 ( 입력하기 편하게 )

  • vi ~/.vimrc
  • vi 입력 설정

alias 설정

  • vi $HOME/.bashrc
  • alias 설정

  1. nginx 컨테이너 실행과 볼륨 연결하는 야물파일 [작성 / 실행 / 종료]
    https://hub.docker.com/_/nginx ⇒ 이것을 토대로 야물파일 작성하고 실행.
  • [root@www compose]# mkdir nginx && cd nginx
  • [root@www nginx]# mkdir -p /some/content && echo "Nnginx TEST" > /some/content/index.html
    • [root@www nginx]# cat /some/content/index.html
      Nnginx TEST
  • [root@www nginx]# vi docker-compose.yml

-컨테이너 동작

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

-동작 확인 과 볼륨 및 네트워크 확인

  • #docker-compose ps -a

-생성한 컨테이너 볼륨 삭제
[root@www nginx]# docker-compose down --volume && rm -rf /some

nginx 기술문서

yaml 파일 작성

  • mkdir nginx && cd nginx
  • vi docker-compose.yml
  • mkdir -p /some/content && echo "Nnginx TEST" > /some/content/index.html
  • cat을 통해 내용 확인
  • yaml 파일 작성 (이미지)

도커 컴포즈 실행

  • 도커 컴포즈 실행 ( 네트워크와 컨테이너 생성 )
  • 컨테이너 상태 확인
  • 네트워크 생성 확인

생성한 컴포즈 삭제

  • 컨테이너 삭제 ( 볼륨도 삭제 , --volume )

  1. nginx 컨테이너 실행 과 포트 설정하는 야물파일 [작성 / 실행 / 종료]
  • [root@www nginx]# vi docker-compose.yml ⇒ 야물파일에서 볼륨 부분 삭제

-동작 / 확인 / 네트워크 확인

  • [root@www nginx]# docker-compose up -d
  • [root@www nginx]# docker-compose ps -a
    • [root@www nginx]# docker network ls
    • [root@www nginx]# docker volume ls ⇒ 볼륨이 없어 보이지 않음
  • [root@www nginx]# curl http://localhost:8080 ⇒ 포트가 잘 설정되었는지 확인

-중지 / 확인 / 네트워크 확인

  • [root@www nginx]# docker-compose down -v
    • [root@www nginx]# docker-compose ps -a
    • [root@www nginx]# docker network ls

yaml 파일 수정

  • 포트 번호 추가 ( ports )
    • docker-compose up -d
    • 컨테이너 작동 확인 (curl)
    • 컨테이너 상태 확인
    • docker-compose down -v ( 컨테이너 삭제 )

*mongoDB 설정 하고 접속 해보기

-https://hub.docker.com/_/mongo (관련 문서)

-도커 파일 수정

  • 포트번호 수정 ⇒ “8081:8081”

-동작 시키기

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

-접속 테스트

-docker-compose down -v

몽고 프레스 접속 및 확인 ( 문서 참고 )

몽고 프레스 보안

  • 몽고 프레스 컨테이너안 config 파일 ( config.default.js )
  • 사이트 접속할 때 인증 설정 ( ME_CONFIG_BASICAUTH_USERNAME )

*postgreSQL 웹페이지 접속 확인

  • #docker-compose.yml 파일 수정

동작 시키고 접속 해보기

  • #docker-compose up -d

접속 해보기

  • 데이터 베이스 형식 : postgres, 서버:db , 사용자이름:postgres , 비밀번호:1234

터미널 연결이 끊기면서 다시 연결이 안되면 로컬PC 재부팅 후 연결…

postgresQL 접속 및 확인

  • yaml 파일 작성 (postgres 항상 재시작 및 비밀번호 설정)
  • 데이터베이스 형식 선택 및 이름 postgres 입력하고 비밀번호 입력하고 접속

도커 컴포즈 요약

  • 하나의 OS에 여러개의 서비스가 동작할때 각각 컨트롤도 가능하고,
  • 동시에 모든 서비스 또는 컨테이너를 컨트롤이 가능함.

*도커 컴포즈 명령어

-docker compose build - 컨테이너 빌드 , 리빌드시 사용

  • docker compose cp ⇒ 로컬PC와 컨테이너간에 파일 복사
  • docker compose create ⇒ 서비스 생성
  • docker compose down ⇒ 중지와 제거가 한꺼번에 실행됨.
  • docker compose event ⇒ 모니터링(실시간)
  • docker compose exec ⇒ 컴포즈로 생성된 컨테이너 안으로 진입
  • docker compose kill ⇒ 컨테이너 동작중인거 강제 중지
    • docker compose pause(멈춤) , ps, push(업로드), restart(재시작), logs(로그정보), ls(목록출력)
    • port (포트 목록 ), images (컴포즈로 생성된 이미지 확인) , rm, up(동작) , run(1회성 동작) version, top(프로세스 상태확인)

-여러 대 한꺼번에 동작 시키기

  • [root@www nginx]# vi docker-compose.yml

#docker-compose up
#docker-compose ps -a
#docker ps -a
#docker network ls
#docker-compose down -v

도커 컴포즈로 여러 대 한번에 동작시키기

  • nginx와 httpd, redis 이미지 불러오는 컨테이너 3대 실행
  • docker-compose ps -a
  • docker ps -a
  • 네트워크 확인

0개의 댓글