1. Docker
docker cli는 단일 컨테이너를 위한 명령어들을 제공합니다.
예를들어 이미지를 생성하려면, $ docker pull [IMAGE]
컨테이너를 생성하려면 $docker create [OPTIONS] IMAGE [COMMAND]
즉, 단일 컨테이너에 대해서 만들거나, 실행하거나 하는 용도로 사용되는 명령어입니다.
2. Dockerfile
도커 파일은 이미지를 생성할 때, 해당 이미지 안에 기본적으로 어떤 소프트웨어를 설치할지 결정하는 도구입니다.
예를들어 $ docker pull ubuntu 를 사용하여 이미지를 받으면 우분투만 들어있는 깡통 이미지만 받아와 집니다.
해당 이미지에 저희는 컨테이너를 만들고 접속하여 원하는 소프트웨어를 설치하는 작업을 거쳐야 합니다.
하지만 Dockerfile을 사용하면, 이미지 안에 어떤것들을 설치할지 결정할 수 있으며 사용자가 작성한 대로 이미지가 만들어 집니다. 즉, 이미지를 커스터마이징 할 수 있게 도와줍니다.
예를들어,
FROM ubuntu:20.04
ARG=DEBIAN_FRONTEND=noninteractive
EXPOSE 80
WORKDIR /
RUN apt update
RUN apt upgrade -y
RUN apt install apache
RUN apt install curl && \
	curl -OL https://github.com/google/protobuf
3. docker-compose
docker-compose는 컨테이너가 여러개일 때 이를 한번에 실행하고자 할 때 사용하는 툴입니다.
docker가 단일 컨테이너를 실행한다면, docker-compose는 여러개의 컨테이너를 실행할 수 있습니다.
docker-compose 를 정의할 때는 .yaml 파일로 정의가 되며 다음과 같습니다.
version: '3.4'
services:
  webmvc:
    image: eshop/webmvc
    environment:
      - CatalogUrl=http://catalog-api
      - OrderingUrl=http://ordering-api
      - BasketUrl=http://basket-api
    ports:
      - "5100:80"
    depends_on:
      - catalog-api
      - ordering-api
      - basket-api
  catalog-api:
    image: eshop/catalog-api
    environment:
      - ConnectionString=Server=sqldata;Initial Catalog=CatalogData;User Id=sa;Password=[PLACEHOLDER]
    expose:
      - "80"
    ports:
      - "5101:80"
    #extra hosts can be used for standalone SQL Server or services at the dev PC
    extra_hosts:
      - "CESARDLSURFBOOK:10.0.75.1"
    depends_on:
      - sqldata
  ordering-api:
    image: eshop/ordering-api
    environment:
      - ConnectionString=Server=sqldata;Database=Services.OrderingDb;User Id=sa;Password=[PLACEHOLDER]
    ports:
      - "5102:80"
    #extra hosts can be used for standalone SQL Server or services at the dev PC
    extra_hosts:
      - "CESARDLSURFBOOK:10.0.75.1"
    depends_on:
      - sqldata
  basket-api:
    image: eshop/basket-api
    environment:
      - ConnectionString=sqldata
    ports:
      - "5103:80"
    depends_on:
      - sqldata
  sqldata:
    environment:
      - SA_PASSWORD=[PLACEHOLDER]
      - ACCEPT_EULA=Y
    ports:
      - "5434:1433"
  basketdata:
    image: redis이렇게 여러개의 이미지로 컨테이너 여러개를 동시에 띄울 수 있으며, 포트 연결과 volumes 설정을 동시에 여러개를 할 수 있습니다.
즉, 여러 어플리케이션을 스택 형태로 정의가 가능한 것입니다.
'프로그래밍 > 도커' 카테고리의 다른 글
| 도커 볼륨/마운트 설명과 차이점. (0) | 2023.03.12 | 
|---|---|
| Docker에서의 -i -t의 의미 (0) | 2023.01.15 | 
| 도커] 외부에서 도커 컨테이너의 웹페이지에 접근하는 방법. (0) | 2020.05.16 | 
| 도커] Windows10 VSCode와 도커 리눅스 연결하기 (0) | 2020.05.16 | 
| 도커] 셋팅이 끝난 이미지 파일을 docker hub에 업로드 하기 (0) | 2020.05.16 | 
 
														
													 
														
													
댓글