AWS Cloud

2. EC2, Docker 설치

JNU 2023. 9. 6. 11:15
반응형

ubuntu 환경의 EC2 instance를 설치해보고 EC2 instance 내부에 Docker를 설치하고

Docker compose와 Docker file을 활용하여 wordpress 환경을 구축해보도록 한다. 테스트 환경은 다음과 같다.

 

테스트 환경

 

1. EC2 instance 생성하기

이름과 AMI를 설정하고 키 페어를 설정한다.

참고로 키 페어를 생성하고 생성된 .pem 파일은 kali linux에 저장한다.

.pem 파일은 밑의 그림과 같이 chmod로 권한을 변경하여 최소권한만 부여해주도록 한다.

추후에 kali linux에서 EC2 instance로 SSH 접속을 하기 위한 인증 key이기 때문에 chmod를 설정한 것이다.

 

Instance 이름과 AMI 설정

 

권한 변경한 EC2-web2.pem 파일

마지막으로 설정할 것은 network 부분으로 VPC는 default로 사용하고 subnet은 할당하지 않았다.

중요한 부분은 Security group으로 원격접속을 위한 SSH port와 Docker와의 portforwarding을 위한 8000 port를 

접근 허용하도록 설정한다. 

외부에서 내부로 접속하는 rule을 적용하는 것이므로 인바운드 규칙에 해당 rule을 설정하도록 한다.

 

 

Security group에 인바운드 규칙에 설정된 rule

 

EC2 instance를 제작한 후, 사전에 준비된 .pem 파일을 활용하여 EC2 instance로 SSH 접속을 한다.

Kali linux에서 다음과 같이 접속하면 생성한 ubuntu EC2 instance로 접근할 수 있다.

 

EC2 instance로 접속한 shell

 

 

2. EC2 instance 내부에 Docker 설치하기

 

이제 ubuntu EC2 instance에서 다음과 같은 명령어로 docker와 docker compose를 설치한다.

1. sudo apt-get update

2. sudo apt install -y docker.io

3. sudo apt install -y docker-compose

 

여기서 docker file과 docker compose의 개념을 간단히 설명하고 넘어가자면

docker compose란, docker에 제 3자가 제작한 가장 기초적인 OS image를 구성하는 기능이며

docker file은 docker compose로 기본 image를 설치한 후, 추가적인 환경설정을 실행하는 파일 기능을 말한다.

위의 3가지 단계가 완료되었으면 sudo service docker start로 docker를 실행시킨다.

 

docker 활성화 확인

이제 docker compose 파일을 작성하여 docker 컨테이너 내부에 wordpress와 mysql database를 생성한다.

docker compose 파일의 내용은 다음과 같고, 해당 코드를 docker-compose.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:
      - 8000: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:

 

 

위의 파일을 제작했다면 다음과 같이 명령어를 실행한다.

4. sudo docker-compose up -d

5. sudo docker ps -a

6. sudo docker inspect [wordpress container ID]

 

실행한 docker 내부 정보 확인

다음과 같이 docker 내부에 wordpress와 mysql이 모두 정상적으로 동작하는 것을 확인하고

퍼블릭 IP 주소의 8000 port로 접속하면 다음과 같이 wordpress 페이지가 반응하는 것을 볼 수 있다.

여기까지가 EC2 instacne 내부에 Docker 제작 후, 접속하는 방식과 동작 방식을 알아보았다.

 

wordpress로 접속된 모습

반응형