Simple is IT, 누구나 보고 누구나 깨닫는 IT

Docker Container Build Example(Dockerfile) 본문

Simple is IT/Cloud & Container

Docker Container Build Example(Dockerfile)

currenjin 2020. 4. 27. 09:19

Docker의 이미지가 될 파일은 go언어로 작성하였습니다.

# Go 언어 설치 작업

https://snowdeer.github.io/go/2018/01/20/how-to-install-golang-on-centos/

https://snowdeer.github.io/go/2018/01/20/how-to-install-golang-on-centos/



Example

1. 모든 HTTP 요청에 대해 "Hello Docker!!"라는 응답을 보낸다.

2. Port Number 8080으로 요청을 받는 서버 애플리케이션으로 동작한다.

3. 클라이언트로부터 요청을 받으면 received request라는 메세지를 표준으로 출력한다.

해당 조건에 맞게 Image가 될 파일을 작성한다.

Configuration

main.go file

Dockerfile

FROM : 도커 이미지의 바탕이 될 베이스 이미지를 지정

-> main.go를 실행하기 위해 Go 언어의 런타임이 설치된 이미지를 사용

RUN : 도커 이미지를 실행할 때 컨테이너 안에서 실행할 명령을 정의

-> main.go 애플리케이션을 배치하기 위한 /echo 디렉터리를 mkdir 명령으로 생성

COPY : 도커가 동작 중인 호스트 머신의 파일이나 디렉터리를 도커 컨테이너 안으로 복사

-> main.go 파일을 도커 컨테이너 안에서 실행할 수 있도록 컨테이너 안으로 복사

CMD : 도커 컨테이너를 실행할 때 컨테이너 안에서 실행할 프로세스를 지정

-> go run /echo/main.go 명령과 같은 내용이다.

Docker Image Build

main파일과 Dockerfile 작성이 끝났으면 image build를 진행해보자.

root@localhost test# docker build -t new:latest .

-t : 생성할 이미지의 이름 지정

이미지가 정상적으로 생성되었다.

(go language와 new:latest가 생성되어있는 모습)

이제 해당 이미지로 컨테이너를 실행해보자.

docker run -d -p 9999:8080 --name test new:latest

-d : 해당 컨테이너를 백그라운드로 실행

-p 9999:8080 : 포트포워딩이다. docker를 사용하는 host의 9999포트를 컨테이너의 8080으로 맵핑

--name : container의 이름을 지정한다.

명령 아랫줄 이상한 문자열은 container의 고유 이름을 나타낸다.


정상적으로 작동하는 모습을 볼 수 있다.

Test


'Hello Docker!!'가 정상적으로 출력이 된다.


Comments