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 执行以下操作:
- 拉取您在上一步构建的镜像 docker-wale。
- 运行 该图像的五个实例即服务,称为 docker-whale,限制每个实例最多使用 CPU 的 10%(跨所有核心) , 和 50MB 内存。
- 如果失败,立即重启容器
- 将主机上的80端口映射到docker-whale的80端口...
参考:https://docs.docker.com/get-started/part3/#docker-composeyml
希望对您有所帮助
我有一个 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 执行以下操作:
- 拉取您在上一步构建的镜像 docker-wale。
- 运行 该图像的五个实例即服务,称为 docker-whale,限制每个实例最多使用 CPU 的 10%(跨所有核心) , 和 50MB 内存。
- 如果失败,立即重启容器
- 将主机上的80端口映射到docker-whale的80端口...
参考:https://docs.docker.com/get-started/part3/#docker-composeyml
希望对您有所帮助