我有几个容器,每个容器在一个docker-compose-<service>.yaml
文件中都有描述,我以
docker-compose -f docker-compose-<service>.yaml up -d
然后我通过docker ps
看到容器正在运行。
我希望我可以通过以下方式停止该容器
docker-compose -f docker-compose-<service>.yaml down
但是容器没有停止。也不是在上面用stop
代替down
时使用逗号。
执行docker kill <service>
会停止容器。
我的问题:由于我所有以docker-compose
开头的服务实际上是每个docker-compose-<service>.yaml
文件的一个容器,我可以使用裸docker
命令停止它吗?
或更笼统地说:docker-compose
是简单的基础docker
命令的帮助者,这意味着使用docker
总是安全的吗(从“使用不同命令的一致性”的角度来看)?
答案 0 :(得分:0)
我的问题:由于我所有以docker-compose开头的服务实际上都是每个docker-compose-.yaml文件的一个容器,因此我可以使用裸docker命令停止它吗?
实际上docker-compose使用的是docker引擎,您可以在本地尝试:
例如:docker-compose.yaml:
version: "3"
services:
# Database
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
# phpmyadmin
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '9090:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: wordpress
networks:
- wpsite
networks:
wpsite:
更全局地说,docker-compose是一种编排器(我更喜欢composer的术语),如果您需要定义彼此依赖的容器堆栈(例如之前的示例phpmyadmin / mysql),则可以在dev中进行测试环境。我认为要在生产环境中具有更好的容器堆栈的弹性,高可用性,服务管理...,您强烈需要考虑实施真正的编排器,例如docker-swarm,kubernetes,openshift...。 以下是一些说明差异的文档:https://linuxhint.com/docker_compose_vs_docker_swarm/
您还可以看到:What is the difference between `docker-compose build` and `docker build`?