为什么“docker-compose”和“docker run”在不同的容器中运行

时间:2021-01-12 01:56:50

标签: docker docker-compose

我使用 docker run -it seafileltd/seafile-mc:7.1.4 /bin/bash 构建了一个 seafile 容器,并且运行良好。但是当我使用以下 docker-compose.yaml 运行它时,情况就有些不同了。

version: '2.0'
services:
  seafile:
    image: seafileltd/seafile-mc:7.1.4
    container_name: seafile
    ports:
      - "80:80"

docker-compose 多几个目录如下

docker-compose:

[root@felix mmm]# docker exec -it seafile bash
root@6ffb38b7058d:/opt/seafile# ls /shared/
logs  nginx  seafile

docker 运行:

[root@felix mmm]# docker run -it seafileltd/seafile-mc:7.1.4 /bin/bash
root@b919cfbb1224:/opt/seafile# ls /shared
ls: cannot access '/shared': No such file or directory

1 个答案:

答案 0 :(得分:0)

当您在示例中运行 docker run 时,您没有运行容器的默认命令,而是运行 bin/bash。

默认情况下,seafile-mc 容器在容器启动时运行 /scripts/start.py,并且该进程将文件写入 /opt 文件夹。

当您运行 docker run -it seafileltd/seafile-mc:7.1.4 /bin/bash 时,您运行的是 /bin/bash 而不是 /scripts/start.py。因此该进程不会运行,也不会写入文件以供选择。

我假设您运行了 docker-compose updocker-compose run seafile,它们运行了 /scripts/start.py,然后写入了 opt 文件夹。

如果您想要一个与您运行的 docker 命令等效的 docker-compose 命令,您可以运行 docker-compose run seafile /bin/bash 并且您会得到与您的 docker run 命令相同的结果。