[AWS] docker 적용

devAnderson·2022년 10월 27일
0

AWS

목록 보기
3/3

1. 퍼블릭 주소, 프라이빗 주소

EC2 인스턴스를 실행시키면, 자동으로 퍼블릭 주소와 프라이빗 주소가 할당된다.

  • 퍼블릭 IPv4 : ICP가 제공하는, 외부로 공개되어 인터넷 네트워크를 통해 접속할 수 있는 공개적 주소를 뜻한다. 우리가 DNS 서비스를 이용해서 특정 컴퓨터에 접근한다면 그 때에 사용되는 공개적 주소가 바로 저것이 되는 것

  • 프라이빗 IPv4 : 개방된 네트워크를 통해 온갖 요청이 다 들어올 수 있다면 그만큼 해킹의 위험도도 커진다. 들어오더라도, 외부에는 노출되지 않을 격리된 네트워크망이 존재해야 한다. 이 영역에 할당되는 ip 주소들이 프라이빗 IPv4이다.

후에 보안그룹을 통해 어떤 루트가 접근이 허용될 지 설정해줘야 사용자들이 들어와서 도커를 통해 서비스를 이용할 수 있게 된다.


2. Docker 기본

  • docker file : 도커 이미지를 생성하기 위한 명령어 문법들의 집합 파일.
  • docker compose : 만들어진 도커 이미지를 이용하여 컨테이너를 생성하고 탑재하는 파일.

해당 강의에서는 컨테이너를 두개 띄울 것이다.
key 부분이 컨테이너 네이밍이 되는데, db라는 이름과 wordpress라는 이름으로 생성하게 될 것.

여기서 volumes라는 부분이 보일 것인데, 이 volume의 개념은 실제 컨테이너의 CRUD가 진행 될 파일을 호스트(즉 내 컴퓨터) 의 특정 영역과 싱크하겠다는 것을 뜻한다.

그냥 컨테이너 내에 데이터를 저장하고 있었을 경우, 코드가 수정되어 컨테이너가 리빌드되고 재실행되면 기존 데이터가 날아가는 문제점이 존재하는데 (마치 in-memory 형태로 저장되었던 휘발성 데이터가 새로고침하면 사라지듯 말이다)

volume을 통해 컨테이너 외부에 이 저장 및 쓰기 등을 진행할 폴더를 연결시켜두면 컨테이너가 없어지더라도 데이터는 유지될 수 있다. 이런 방식으로 사용하기 위한 부분이다.

구조는 "현재 로컬에 지정영역:연결될 컨테이너 내 폴더영역"


yml 텍스트를 EC2 환경 내에서 만들어서 (vim 이용) docker compose up을 하게 되면 컨테이너가 생성이 된다.

학습용으로 docker 홈페이지에서 제공하는 예시 yml을 사용하였다.

services:
  db:
    # We use a mariadb image which supports both amd64 & arm64 architecture
    image: mariadb:10.6.4-focal
    # If you really want to use MySQL, uncomment the following line
    #image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:latest
    volumes:
      - wp_data:/var/www/html
    ports:
      - 80:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:
  wp_data:

현재 열려있는 포트는 3306과 80번이다.

이제 외부에서는 이 EC2에 접근하는 사람들이 해당 포트로 접근할 수 있도록 보안그룹을 통해 개방해두어야 한다.

참고로, 한 EC2에는 수많은 보안그룹 세팅 모음집을 만들 수 있고, 이것을 적절하게 선택해서 보안 시스템을 적용하는 것이 가능하다.


주의, 이 때에 보안그룹 내에는 인바운드 규칙을 설정하여 어떤 접근이 허용되게 할 지를 정할 수 있다. 그런데, 보안 그룹에 ssh와 관련된 설정을 해두지 않으면 pem키를 이용해서 초기 ec2 접근하는 것 조차 안되므로 설정해줘야 한다.

profile
자라나라 프론트엔드 개발새싹!

0개의 댓글