Docker:Dockerfile与docker-compose.yml

我有一个Dockerfile如下所示:

 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 

我已经将上面的Dockerfile为image: Dockerfile docker-whale

我想为上面的图像写一个docker-compose.yml 。 我的理解是,你可以用docker-compose运行多个容器。

所以,如果我想运行5个docker-whale图像, docker-compose.yml是怎么样的?

你可以把这个docker-compose.yaml放到docker-compose.yaml旁边:

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

然后执行以下命令:

 # 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 

我假设你想运行5个docker鲸的容器,而不是5个图像。

在你的情况compose.yml将不会有关于容器数量的信息。 你需要使用scale命令

 docker-compose scale <service-name>=5 
 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" 

以上是你的docker-compose.yml的样子。 这个docker-compose.yml告诉Dockers执行以下操作:

  1. 拉上一步你build立的图像泊坞窗。
  2. 运行该图像的五个实例作为一个名为docker-whale的服务,限制每个用户使用最多10%的CPU(跨所有核心)和50MB的RAM。
  3. 如果一个失败,立即重新启动容器
  4. 将主机上的端口80映射到docker鲸的端口80 …

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

希望能帮助到你

泊坞窗,compose.yml

 docker-whale: image: docker-whale 

然后在同一个文件夹里运行

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

这假定你的应用程序是可扩展的,但你仍然可以在docker-compose.yml中写入5个条目,这是螺丝刀,但有时是有用的:

 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