【问题标题】:docker exec not working in docker-compose containersdocker exec 不能在 docker-compose 容器中工作
【发布时间】:2016-02-22 17:34:52
【问题描述】:

我正在使用 docker compose 执行两个 docker 容器。

CONTAINER ID        IMAGE               COMMAND                  CREATED                 STATUS              PORTS                                                                                                                                   NAMES
eef95ca1b59b        gogent_qaf          "/bin/sh -c ./slave.s"   14 seconds ago      Up 12 seconds       4242/tcp, 7000-7005/tcp, 9999/tcp, 0.0.0.0:30022->22/tcp                                                                                coreqafidm_qaf_1
a01373e893eb        gogent_master       "/bin/sh -c ./master."   15 seconds ago      Up 13 seconds       4242/tcp, 0.0.0.0:27000->7000/tcp, 0.0.0.0:27001->7001/tcp, 0.0.0.0:27002->7002/tcp, 0.0.0.0:27003->7003/tcp, 0.0.0.0:29999->9999/tcp   coreqafidm_master_1

当我尝试使用时:

docker exec -it coreqafidm_qaf_1 /bin/bash 

我得到错误:

docker exec -it coreqafidm_qaf_1 /bin/bash
no such file or directory

这里是 docker-compose 文件:

version: '2'
services:
  master:
    image: gogent_master
    volumes:
      - .:/d1/apps/qaf
      - ./../core-idm-gogent/:/d1/apps/gogent
    ports:
      - "27000-27003:7000-7003"
      - "29999:9999"
    build:
      context: .
      dockerfile: Dockerfile.master
  qaf:
    image: gogent_qaf
    ports:
      - "30022:22"
    volumes:
      - .:/d1/apps/qaf
      - ./../core-idm-gogent/:/d1/apps/gogent
    depends_on: [master]
    build:
      context: .
      dockerfile: Dockerfile.qaf

涉及的两个 Docker 文件都有最后一个 WORKDIR 命令:

WORKDIR /d1/apps/qaf

如果机器的自然文件系统上有一个 REAL 目录 /d1/apps/qaf ,则 docker exec 在某种程度上可以工作。它会打开一个外壳。但是,此 shell 无法使用映射的卷,我看到的文件是真实自然目录中的文件,而不是映射卷的内容。

$ mkdir /d1/apps/qaf
$ docker exec -it coreqafidm_qaf_1 /bin/bash
root@eef95ca1b59b:/d1/apps/qaf#
root@eef95ca1b59b:/d1/apps/qaf# ls /d1/apps/gogent
ls: cannot access /d1/apps/gogent: No such file or directory

卷在 docker-compose 上下文中正常工作。我有脚本在他们执行,他们工作。只是 docker exec 看不到卷。

【问题讨论】:

    标签: docker exec docker-compose volumes


    【解决方案1】:

    错误源于容器未找到/bin/bash,因此出现no such file or directory 错误。 docker exec 工作正常。

    试试/bin/sh

    【讨论】:

    • /bin/sh 也失败了。我不认为是这样。如果我将 /d1/apps/qaf 添加到主机的自然文件系统,则该命令有效。它找到 /bin/bash 和/或 /bin/sh。似乎与 docker exec 的所有卷无关。
    • 我现在让 sshd 工作作为一种解决方法,但这有点糟糕。除非我解决真正的问题,否则我将不得不忍受。
    • docker exec <..> ls 有什么作用?
    【解决方案2】:

    好吧,我在另一台机器上安装了 docker-compose 等,但不存在这个问题。去搞清楚。这只是我没有时间追查的事情之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 2021-08-17
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多