Docker:Docker文件与docker-compose.yml

Docker: Dockerfile vs 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 构建为图像:docker-whale

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

所以如果我想 运行 docker-whale 的 5 张图像,docker-compose.yml 看起来怎么样?

我假设您想要 运行 5 个 docker-whale 容器而不是 5 个图像。

在您的情况下 compose.yml 将没有关于容器数量的信息。你需要使用缩放命令

docker-compose scale <service-name>=5

docker-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

您可以将此 docker-compose.yaml 放在您的 Dockerfile 旁边:

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
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. 拉取您在上一步构建的镜像 docker-wale。
  2. 运行 该图像的五个实例即服务,称为 docker-whale,限制每个实例最多使用 CPU 的 10%(跨所有核心) , 和 50MB 内存。
  3. 如果失败,立即重启容器
  4. 将主机上的80端口映射到docker-whale的80端口...

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

希望对您有所帮助