【问题标题】:What are the consequences of using "docker" and "docker-compose" commands interchangeably?交替使用“docker”和“docker-compose”命令的后果是什么?
【发布时间】:2019-12-03 16:00:58
【问题描述】:

我有几个容器,每个容器都在一个 docker-compose-<service>.yaml 文件中进行了描述,我从它们开始

docker-compose -f docker-compose-<service>.yaml up -d

然后我通过docker ps 看到容器正在运行。

我希望我可以通过

停止该容器
docker-compose -f docker-compose-<service>.yaml down

但容器并未停止。当我将上面的comane与stop而不是down一起使用时也不是。

执行docker kill &lt;service&gt; 会停止容器。

我的问题:由于我所有以docker-compose 开头的服务实际上是每个docker-compose-&lt;service&gt;.yaml 文件的一个容器,我可以使用裸docker 命令来停止它吗?

或者更笼统地说:docker-compose 只是底层docker 命令的助手,这意味着使用docker 总是安全的(从“使用不同命令的一致性”的角度来看)?

【问题讨论】:

  • 您绝对可以使用docker stop &lt;container&gt; 停止撰写容器。但是为什么每张图像都有一个撰写文件?为什么在这种情况下使用 compose?
  • @JustinLessard:几个原因:1)因为以 docker-compose 格式编写配置比在几行上拖动 docker run ... 更容易,2)它使启动/停止它们更容易你有 50 或 60 个容器等。替代方案是 kubernetes,但这是我家庭设置的方式
  • 在这种情况下,我推荐github.com/rancher/k3s,在本地、开发和生产环境中测试和批准。但它默认使用'containerd'。可以使用 docker 代替。
  • 这很奇怪......你能发布你的docker-compose-&lt;service&gt;.yml 文件吗?它绝对应该与docker-compose stop 命令一起使用。

标签: docker docker-compose


【解决方案1】:

我的问题:由于我所有以 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 引擎进行交互:

更全局的 docker-compose 是一种编排器(我更喜欢 composer 的术语),如果你需要一个定义容器堆栈,相互依赖(如前面的例子 phpmyadmin/mysql),在 dev 中测试是完美的环境。在我看来,要在生产环境中对容器堆栈有更好的弹性、HA、服务管理...,您强烈需要考虑实现真正的编排器,例如 docker-swarm、kubernetes、openshift...。 这里有一些文档来解释差异:https://linuxhint.com/docker_compose_vs_docker_swarm/

你也可以看到:What is the difference between `docker-compose build` and `docker build`?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2016-02-16
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多