2016-07-21 15 views
6

Ich habe einen Dockerfile wie die folgenden:Docker: Dockerfile vs Docker-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 

ich die oben Dockerfile als Bild aufgebaut haben: docker-whale

Ich möchte ein docker-compose.yml für die oben schreiben Bild. Mein Verständnis ist, dass Sie mehrere Container mit Docker-Compose ausführen können.

Also, wenn ich 5 Bilder von docker-whale ausführen möchte, wie sieht docker-compose.yml aus?

Antwort

17

könnten Sie diese docker-compose.yaml setzen neben Ihrem Dockerfile:

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

Und führen Sie dann die folgenden Befehle:

# 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

Ich nehme an, Sie möchten 5 Container Docker-Wal und nicht 5 Bilder ausführen.

In Ihrem Fall hat compose.yml keine Informationen über die Anzahl der Container. Sie benötigen Skala Befehl

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

Docker-compose.yml

docker-whale: 
    image: docker-whale 

dann innerhalb selben Ordner Lauf verwenden:

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

Diese Anwendung übernimmt ist schuppen bewusst , aber Sie können immer noch 5 Einträge in docker-compose.yml schreiben, das ist ein Schraubendreher, aber manchmal nützlich:

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

hilft Das ist nicht der richtige Weg! – atv

+1

@atv kannst du bitte erklären, was genau falsch ist? – webwurst

+1

Siehe die akzeptierte Antwort. Der Befehl scale sollte verwendet werden, um die Anzahl der Instanzen zu erzeugen – 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" 

...

Oben wie dein docker-compose.yml sollte aussehen wie. Dieses docker-compose.yml weist Dockers an, Folgendes zu tun:

  1. ziehen Sie das Bild Docker-Wale, das Sie im vorherigen Schritt erstellen.
  2. Führen Sie fünf Instanzen dieses Bildes als Dienst namens "Docker-Wal" aus, wobei Sie die Verwendung von maximal 10% der CPU (über alle Kerne) und 50 MB RAM begrenzen.
  3. sofort Behälter neu starten, wenn ein
  4. Map Port 80 auf dem Host ausfällt 80 bis Andockfenster-Wal Hafen ...

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

Hoffe, dass es

Verwandte Themen