Dockerfile
container
Dockerfile
Example 1
Example
- 모든 HTTP 요청에 대해 "Hello Docker!!"라는 응답을 보낸다.
- Port Number 8080으로 요청을 받는 서버 애플리케이션으로 동작한다.
- 클라이언트로부터 요청을 받으면 received request라는 메세지를 표준으로 출력한다.
-
해당 조건에 맞게 Image가 될 파일을 작성한다.
-
Docker의 이미지가 될 파일은 go언어로 작성하였습니다.
Go 언어 설치 작업
https://snowdeer.github.io/go/2018/01/20/how-to-install-golang-on-centos/
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!!'가 정상적으로 출력이 된다.