2016-07-21 14 views
6

Mam Dockerfile jak:Docker: Dockerfile vs Döcker-compose.yml

FROM docker/whalesay:latest 
RUN apt-get update && apt-get install -y fortunes 
CMD while true; do /usr/games/fortune -a | cowsay; sleep 2; done 

zbudowałem wyżej Dockerfile jako obraz: docker-whale

Chcę napisać docker-compose.yml dla wyżej obraz. Rozumiem, że można uruchamiać wiele kontenerów przy użyciu funkcji dokowania.

Więc jeśli chcę uruchomić 5 obrazów docker-whale, jak wygląda docker-compose.yml?

Odpowiedz

17

Można umieścić ten docker-compose.yaml obok Dockerfile:

version: '2' 
services: 
    docker-whale: 
    image: docker-whale 
    build: . 

a następnie wykonać następujące polecenia:

# build docker image 
docker-compose build 

# bring up one docker container 
docker-compose up -d 

# scale up to three containers 
docker-compose scale docker-whale=3 

# overview about these containers 
docker-compose ps 

# view combined logs of all containers 
# use <ctrl-c> to stop viewing 
docker-compose logs --follow 

# take down all containers 
docker-compose down 
3

Zakładam, że chcesz uruchomić 5 kontenerów z wielorybami doków, a nie 5 zdjęć.

W twoim przypadku compose.yml nie będzie mieć informacji o liczbie kontenerów. Trzeba użyć polecenia skali

docker-compose scale <service-name>=5 
-1

doker-compose.yml

docker-whale: 
    image: docker-whale 

Następnie wewnątrz samej perspektywie folderu:

docker-compose up -d 
docker-compose scale docker-whale=5 

Zakłada aplikacji jest skala-aware , ale wciąż możesz napisać 5 wpisów w docker-compose.yml, to jest śrubokręt, ale czasami przydatne:

docker-whale-1: 
    image: docker-whale 

docker-whale-2: 
    image: docker-whale 

docker-whale-3: 
    image: docker-whale 

docker-whale-4: 
    image: docker-whale 

docker-whale-5: 
    image: docker-whale 
+0

To nie jest w porządku droga ! – atv

+1

@atv czy możesz wyjaśnić, co jest z tym nie tak? – webwurst

+1

Zobacz zaakceptowaną odpowiedź. Polecenie scale powinno być użyte do odrodzenia liczby instancji – atv

3
version:"3" 
services: docker-whale: 
    image:docker-whale 
    deploy: 
    replicas:5 
    resources: 
     limits: 
     cpus:"0.1" 
     memory: 50M 
    restart_policy: 
     condition: on-failure 
    ports: "80:80" 

...

Powyżej jak powinien wyglądać twój docker-compose.yml wygląda jak. Ten doker-compose.yml mówi Dockersowi, aby wykonał następujące czynności:

  1. Wyciągnij obrazek dokowania, który zbudowałeś w poprzednim kroku.
  2. Wykonaj pięć instancji tego obrazu jako usługi o nazwie docker-whale, ograniczając każdy z nich do wykorzystania maksymalnie 10% CPU (we wszystkich rdzeniach) i 50 MB pamięci RAM.
  3. Natychmiast uruchom ponownie pojemników jeśli nie
  4. portu Mapa 80 na gospodarza dokowanym-wieloryba port 80 ...

Ref: https://docs.docker.com/get-started/part3/#docker-composeyml

Nadzieja pomaga