반응형

 

 

Dockerfile

 

사용자가 이미지를 어셈블하기 위해 호출할 수 있는 명령들이 포함된 간단한 텍스트 파일.

 

즉, base image 파일로부터 수정된 image를 만드는 일련의 과정들을 정리해 놓은 파일이며, docker는 이 Dockerfile을 이용해 손쉽게 바로 동일한 이미지를 반복적으로 생성할 수 있다.

 


docker-Compose.yml

 

다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구로

 

앱을 구성하는 서비스를 docker-compose.yml에 정의하여 docker-compose up 명령어로 앱을 실행할 수 있다.

 

docker-compose.yml에 빌드 명령을 추가하면 Docker compose는 DockerFile를 사용한다.

 

즉, Docker Compose는 앱이 실행되는 동안 컨테이너를 관리하는 역할이고, 앱이 시작되면 컨테이너를 띄우고 앱이 실행되는 도중에 컨테이너가 종료되면 다시 띄워준다.

 

조금 더 쉽게 말하자면, docker-compose는 연결된 다수의 Container를 하나로 통합하여 관리하는 도구이고, host level에서만 동작하며, Container 실행 옵션을 미리 정의한 문서인 docker-compose-yml을 기반으로 Container를 실행한다.

 

Dockerfile에 빌드 관련 내용이 다 기재되어 있기 때문에 docker-compose.yml에서는 따로 빌드 관련 내용을 기재할 필요 없이 Dockerfile의 경로를 지정하기만 하면 된다.

 

아래는 docker-compose.yml의 기본 형식이다.

# 버전을 정의하는 것으로 버전에 따라 지원하는 형식이 다르다.
version: "3.0"
# docker-compose로 생성 할 container의 옵션을 정의한다.
services:
	# 생성 할 container 이름을 지정한다.
	[container 이름]: 
		# container 생성시 사용 할 이미지를 지정한다.
		image: [image 이름]:[버전] 
		# docker-compose build 옵션에서 사용되는 build 옵션을 기재한다.
		# dockerfile에 명시된 FROM의 image를 사용하여 위에 명시된 image 이름과 tag로 새로운 image를 생성한다.
		build:
			# dockerfile의 위치를 지정한다.
			context: 
		# container port mapping 정보
		ports:
				- "80:80"
		# 도커 컨테이너가 실행되었을 때 요청 대기할 포트를 지정한다.
		# 여러 포트 지정도 가능하다.
		expose:
				- "80"
		# 환경 변수 리스트 정의
		environment:
				key: "value"
		# 실행 환경 설정
		stdin_open: true # docker run -i
		tty: true # docker run -t
		entrypoint: /bin/bash # exec /bin/bash

 

아래는 예시 dockerfile과 docker-compose.yml이다.

아래의 docker-compose.yml 파일의 내용은 아래의 docker 명령어 두 개를 수행하는 내용이다.

  • docker build -t ubuntu_base_web:v1 ./
  • docker run -p 80:80

 

dockerfile

FROM node

WORKDIR /var/www/html

COPY index.html /var/www/html
COPY server.js /var/www/html

EXPOSE 80

CMD ["node", "server.js"]

 

docker-comopse.yml

// docker built -t nginx

version: "3.0"
services:
	web_service:
		image: ubuntu_base_web:v1
		build:
			context: ./
		ports:
			- "80:80"

 


https://velog.io/@s2moon98/dockerFile과-docker-compose.yml-의-차이점

https://doitnow-man.tistory.com/entry/8-Dockerfile-과-Docker-composeyml

https://kimjingo.tistory.com/108

반응형

'Notes > Docker' 카테고리의 다른 글

[Note] 리눅스 컨테이너(리눅스의 프로세스 격리 기능)  (0) 2022.08.07
[Note] Docker 입문 정리  (0) 2022.08.07

+ Recent posts