Among Us - Yellow Crewmate [Docker] Docker File 작성하기

DevOps/Docker

[Docker] Docker File 작성하기

감쟈! 2021. 3. 25. 16:39

DockerFile

Docker File이란 애플리케이션을 Image로 만들기 위해 작성하는 설정 파일이다.

Docker File이 어떻게 구성되어 있는지 볼 수 있다면 Docker Image가 어떤식으로 구성되어 있는지 알 수 있다.

 

매번 애플리케이션을 동작하는 환경을 구성하기 위해 패키지를 설치하고 환경설정을 따로해주고 하는 과정을 반복 하다보면 번거로워질 때가 있다. 그럴때 docker File을 통해서 패키지, 소스코드, 명령어, 환경변수 등을 미리 기록해두는 파일을 작성해서 빌드하면 자동으로 이미지가 생성된다.

 

이런식으로 애플리케이션의 빌드 및 배포를  유연하게 자동화 할 수 있게끔 하려는 것이 DockerFile을 작성하는 목적이다.

 

 

 

Docker File 리소스 정의

 

  • FROM : 생성할 이미지의 베이스가 될 이미지를 뜻한다. <Image>:<tag> 형식
  • MAINTAINER : 이미지를 생성한 개발자의 정보를 포함
  • LABLE :  이미지에 메타데이터를 추가. (추후에 검색하기 쉽게 해줌)
  • RUN : 도커이미지가 실행되기 전 수행하는 명령어
  • ADD : 파일을 이미지에 추가함. Dockerfile이 위치한 디렉터리에서 파일을 가져옴
  • WORKDIR : 명령어를 실행할 디렉터리를 나타낸다.  (cd명령어와 같다고 보면 된다)
  • EXPOSE : 생성된 이미지에서 노출할 포트를 설정한다.
  • CMD : 컨테이너가 시작될 때마다 실행항 명령어. Dockerfile에서 한번만 사용 가능

 

 

*도커 빌드를 하는데 이러한 오류가 나면서 빌드가 안된다??? 그럴때 확인해 봐야하는것

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /root/Dockerfile: no such file or directory

 

 

1. 현재 디렉터리에 Dockerfile이 있는지 확인

2. Dockerfile 파일명 제대로 했는지 확인. (나는 DockerFile 로 File을 대문자로 해줬더니 안되더라...)

 

 

 

Dockerfile 작성

 

Dockerfile 예시파일을 하나 작성해서 아파치 웹서버를 띄어보도록 하자

 

Dockfile

 

 

 

Dockerfile 빌드

다음과 같이 Dockerfile 작성을 완료했으면 이제 빌드해줄 차례다.

 

# docker build -t potato .

 

-t 옵션을 통해 이미지의 이름을 potato 으로 설정한다.  그리고  Dockerfile이 저장되어 있는 현재경로를 입력해준다

 

명령어를 입력하면 Dockerfile에서 작성했던 순서대로 하나씩 빌드해 나간다

 

 

 

# docker images

 

빌드가 완료되면 docker images 명령어를 통해 내가 빌드한 이미지가 있는지 확인해보자

 

 

 

 

# docker run -d -p 80:80 --name potato -v ~/html:/var/www/html potato

이제 이 이미지를 사용하여 컨테이너를 생성하고 실행시켜보자.

 

<option>

--name : 컨테이너 이름

-d : 백그라운드 모드로 실행

-p : [Host port]:[container port] 포트 연결

-v : 로컬에 /html에 있는 파일을 /var/www/html 로 연동

 

 

 

# docker ps

 

docker ps 명령어로 실행중인 컨테이너 확인

 

 

 

컨테이너가 실행중인 것을 확인하였으면 아파치 웹서버로 접속이 가능해질 것이다. AWS EC2의 공인IP를 입력해주어서

로컬에 미리 만들어 두었던 index.html 파일의 웹페이지를 띄워보았다.