목차

  1. Docker 설치하기
  2. 예제를 통한 Dockerfile, image 생성
  3. Docker Hub 에 Docker Image 등록
  4. AWS EC2 에서 instance 생성
  5. AWS EC2 접속
  6. AWS EC2 에서 Docker 사용

1. Docker 설치하기

Docker 공식홈페이지에서 Docker desktop 을 찾는다.

여기서 OS 에 맞는 Docker를 다운받는다. Stable 버전으로 받자. 나는 windows 버전으로 받았다. Default 로 설치한다.

나의 경우 Linux를 설치하지 않았기 때문에 docker 를 실행할 수 없었다. 이 경우 WSL 2 Linux 커널 업데이트를 하면 해결된다.

이제 Docker 가 제대로 설치됐는지 확인해보자. CMD를 실행해 docker 라고 입력했을 때 제대로 실행이 되면 설치가 정상적으로 된 것이다.
만약 정상적으로 설치되지 않았다면 시작 버튼을 누르고 Edit the system environment variables 시스템 환경 변수 편집을 검색, 실행을 통해 해결한다.

Environment Variables 환경 변수를 클릭하고, System variables 시스템 변수에서 Path를 편집한다. 정상적으로 docker 가 실행되기 위해서는 다음 두 가지가 이 목록에 있어야 한다: C:\Program Files\Docker\Docker\resources\bin 와 C:\ProgramData\DockerDesktop\version-bin . 없으면 등록하자.

Reference

2. 예제를 통한 Dockerfile, image 생성

간단한 예제를 통해 Dockerfile 을 통해 Image 를 생성해보자. 먼저 아래와 같은 index.php 를 만든다.

<?php

echo "Hello, World";

해당 디렉토리에 config 와 src 폴더를 만든다. src 폴더에는 index.php 를 넣고 config 폴더에는 php.ini 파일을 넣는다. php.ini 파일은 여기 에서 구할 수 있다.

와 같은 디렉토리에 아래와 같은 Dockerfile 을 생성한다.

FROM php:7.0-apache
COPY src/ /var/www/html

그 다음 cmd 에서 해당 디렉토리로 이동한 후에, 아래와 같은 명령어를 실행해 image 를 생성한다.

C:\folder>docker build -t hello-world .
[+] Building 1.1s (7/7) FINISHED

정상적으로 실행이 된 다음에는 아래와 같은 명령어를 실행해 container 를 만들자.

docker run -p 80:80 hello-world

이제 웹브라우저에서 localhost 에 접속해, php 파일이 실행되는 것을 확인하자.

참고로 Docker image 가 생성된 후에는 index.php 파일을 변경해도, 반영되지 않는다. 왜냐하면, 기존에 생성된 image 파일로 Docker 가 구동되기 때문이다. 물론 개발 단계에서는 변경 사항을 반영하는 방법이 있다고는 한다.

Reference

3. Docker Hub 에 Docker Image 등록

Docker hub 에 docker image 를 등록하자. 여기에 등록된 이미지를 AWS 서버에서 가져와서 사용하게 된다.

Docker Hub 에 가입한 후 repository 를 만들자. 필자는 hellow-world 라고 이름을 지었다.

먼저 아래와 같은 명령어를 실행해 docker image 가 local 에 있는지 확인한다. docker hub 에 등록할 image id 를 복사해놓는다.

C:\Users>docker images

해당 image 를 docker hub 에 등록하기 위해서 cmd 에서 docker hub 에 로그인 해야 한다. 아래 명령어를 입력한 후에 username 과 password 로 로그인 하자.

C:\Users>docker login

위에서 복사해놓은 docker image id 를 사용해 docker tag /:<태그> 을 입력한다. 태그는 구분을 위해 사용하는 것이기 때문에 아무렇게나 입력해도 된다.

C:\Users>docker tag IMAGE_ID_HERE! USERNAME_HERE!/REPOSITORY_HERE!:base

이제 tag 한 docker image 를 docker hub 에 등록하자. 아래와 같이 명령어를 입력하면 된다.

C:\Users>docker push USERNAME_HERE!/REPOSITORY_HERE!:base

Reference

4. AWS EC2 에서 instance 생성

이제 instance 를 생성하자. AWS dashboard 에서 EC2 에 접속한다. 여기서 Instance 라는 항목을 선택한다. 그리고 Launch instances 를 클릭한다. 그러면 7 단계의 과정을 거쳐서 instance 를 생성하게 된다.

  1. Choose AMI
    Ubuntu Server 18.04 LTS (HVM) 를 선택한다.

  2. Choose Instance Type
    t2.micro 를 선택한다. Free tier eligible 이기 때문에 테스트용으로 선택하는 것이다.

  3. Configure Instance
    Subnet 은 No preference 를 선택한다. 필자의 경우 No preference 외에 다른 것을 선택했을 때 instance 가 생성되지 않았다. Auto-assign Public IP 는 Enable 을 선택한다.

  4. Add Storage
    그냥 넘긴다.

  5. Add Tags
    그냥 넘긴다.

  6. Configure Security Group
    Add Rule 을 클릭하여 Type 을 HTTP 로 선택한다. 이때 Port Range 가 80 으로 선택이 된다. 이 포트 번호를 기억하자. docker container 를 AWS 에서 생성하기 위해 필요하다.

  7. Review
    Launch 버튼을 클릭하자. 그러면 Select an existing key pair or create a new key pair 라고 modal 이 뜬다. 이미 key pair 를 만들었으면 만들어 둔 것을 사용할 수 있지만, 지금 이 글은 tutorial 이므로 key pair 가 없다고 가정한다. Create a new key pair 를 선택하고 key pair name 을 임의로 입력한다. 필자는 seoul 이라고 입력했다. 그 다음 Launch Instances 를 클릭한다. key pair 파일이 다운로드될 path 를 고르면 이제 instance 가 생성된다.

이제 생성된 instance 를 클릭한다. Public IPv4 DNS 를 복사해놓자.

Reference

5. AWS EC2 접속

이제 key pair 를 이용해 AWS EC2에 접속해보자. OS 에 따라 방법이 다르다.

  1. Linux
    Key pair 가 있는 경로로 이동하여 다음과 같은 명령어를 사용한다. 이 때 위에서 복사한 Public IPv4 DNS 를 사용한다.
$ ssh -i KEYPAIR_FILENAME! ubuntu@PUBLIC_IPV4_DNS!
  1. Windows (Putty 사용)
    먼저 Putty 를 다운로드 하자. 다운로드가 완료된 후 default 로 설치한다. 그러면 C:\Program Files\PuTTY 에 puty 가 설치가 된다. 여기서 puttygen.exe 를 실행한다.

    Load 를 클릭해 위에서 다운로드 받은 key pair 파일을 선택한다. 그 다음 Save private key 를 눌러 Putty private key 를 저장한다.

    이제 C:\Program Files\PuTTY 에서 putty.exe 를 실행한다. Connection > SSH > Auth 를 선택한다. Browse 버튼을 눌러 바로 위 문단에서 생성한 Private key file을 선택한다.

    Session 탭으로 이동한다. 4. AWS EC2 에서 instance 생성 단계에서 복사한 Public IPv4 DNS 를 Host Name에 입력한다.

    이제 open 을 눌러 AWS EC2에 접속해도 되지만 한 가지 더 설정하자. putty 는 실행될 때마다 초기화된다. 앞으로 귀찮지 않기 위해서는 putty.exe 에서 설정한 환경을 저장하자. Saved Sessions 부분에 임의의 이름으로 현재 설정을 저장한다. 그 다음 open 을 눌러 AWS EC2에 접속하자.

EC2 에 접속하면 login as 라는 말이 나온다. 필자는 instance 를 만들 때 ubuntu 로 만들었으니, ubuntu 라고 입력한다. 그러면 접속이 완료된다.

Reference

6. AWS EC2 에서 Docker 사용

EC2 에 접속한 후에, 아래와 같은 명령어를 사용해 Linux 를 업데이트 한다. 업데이트를 해야 docker 를 사용할 수 있다.

$ sudo apt update

그 다음에 아래와 같은 명령어를 실행해 docker 를 설치한다.

$ sudo apt install docker.io

참고로 build 는 이미 docker hub 에 돼 있기 때문에 여기서 필요 없다. 이제 아래의 명령어를 시행해 docker container 를 생성한다. username 과 repository 를 정확하게 입력하자.

$ sudo docker run -p 80:80 USERNAME_HERE!/REPOSITORY_HERE!

-p 80:80 의 의미를 알아보자. 앞의 80 은 host machine 의 port 번호, 뒤의 80 은 docker container 의 port 다. 4. AWS EC2 에서 instance 생성6. Configure Security Group 에서 instance 의 Port Range 가 80 으로 선택이 되었으니 host machine 의 port 를 80 으로 해야 한다.

이제 접속해서 웹사이트가 제대로 돌아가는지 확인하자. AWS EC2 에 접속한 후 instances 를 클릭한다. 이번 프로젝트에 해당하는 instance ID 를 클릭한다. Public IPv4 DNS 에서 open address 를 새로운 탭에서 열자.

이때 페이지가 열리지 않는 경우가 있는데, 그 이유는 https 로 주소가 자동으로 입력됐기 때문이다. 4. AWS EC2 에서 instance 생성6. Configure Security Group 에서 필자는 Type 으로 HTTP 를 선택했다. 그렇기 때문에 URL 에서 https 를 http 로 수정해서 입력하면 Public IPv4 DNS 에 접속이 된다.

Reference