2016-07-21 23 views
6

Tôi có một Dockerfile như sau: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 

Tôi đã xây dựng trên Dockerfile như hình ảnh: docker-whale

Tôi muốn viết một docker-compose.yml cho trên hình ảnh. Sự hiểu biết của tôi là bạn có thể chạy nhiều vùng chứa với docker-compose.

Vì vậy, nếu tôi muốn chạy 5 hình ảnh của docker-whale, cách docker-compose.yml trông như thế nào?

Trả lời

17

Bạn có thể đặt docker-compose.yaml này bên cạnh Dockerfile của bạn:

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

Và sau đó thực hiện các lệnh sau:

# 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

Tôi giả sử bạn muốn chạy 5 vùng chứa của đế-cá voi chứ không phải 5 hình ảnh.

Trong trường hợp compose.yml của bạn sẽ không có thông tin về số lượng vùng chứa. Bạn cần phải sử dụng lệnh quy mô

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

Docker-compose.yml

docker-whale: 
    image: docker-whale 

Sau đó, bên trong cùng một thư mục chạy:

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

này giả định ứng dụng của bạn là quy mô-aware , nhưng bạn vẫn có thể viết 5 mục trong docker-compose.yml, đây là tuốc nơ vít nhưng đôi khi hữu ích:

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

Đó là không đúng sự đường ! – atv

+1

@atv bạn có thể giải thích chính xác điều gì sai với điều này không? – webwurst

+1

Xem câu trả lời được chấp nhận. lệnh quy mô nên được sử dụng để sinh ra số lượng các cá thể – 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" 

...

Trên đây là cách docker-compose.yml của bạn nên nhìn. Docker-compose.yml này yêu cầu Dockers thực hiện những việc sau:

  1. kéo hình ảnh docker-wale mà bạn xây dựng ở bước trước.
  2. Chạy năm phiên bản của hình ảnh đó dưới dạng dịch vụ được gọi là docker-whale, giới hạn mỗi hình ảnh để sử dụng, nhiều nhất là 10% CPU (trên tất cả các lõi) và 50MB RAM.
  3. Ngay lập tức khởi động lại container nếu một thất bại
  4. Bản đồ cổng 80 trên máy chủ để Docker-cá voi của cổng 80 ...

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

Hy vọng nó giúp

Các vấn đề liên quan