Docker:Dockerfile与docker-compose.yml

eal*_*eon 7 docker dockerfile docker-compose

我有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
Run Code Online (Sandbox Code Playgroud)

我已将上面的内容构建Dockerfile为图像:docker-whale

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

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

web*_*rst 18

你可以把它放在你的docker-compose.yaml旁边Dockerfile:

version: '2'
services:
  docker-whale:
    image: docker-whale
    build: .
Run Code Online (Sandbox Code Playgroud)

然后执行以下命令:

# 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
Run Code Online (Sandbox Code Playgroud)


Hun*_* Vu 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" 
Run Code Online (Sandbox Code Playgroud)

...

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

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

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

希望能帮助到你