docker - 从另一个容器在Docker容器中运行可执行文件

标签 docker docker-compose

我正在尝试从另一个Docker容器中运行一个可执行文件,而该文件已经在Docker容器中。这可能吗?

version: '3.7'
services:
  py:
    build: .
    tty: true
    networks:
      - dataload
    volumes:
      - './src:/app'
      - '~/.ssh:/ssh'

  winexe:
    build: 
      context: ./winexe
      dockerfile: Dockerfile
    networks:
      - dataload
    ports: 
      - '8001:8001'
    volumes:
      - '~/path/to/winexe:/usr/bin/winexe'
      - '~/.ssh:/ssh'
    depends_on:
      - py

networks:
  dataload:
    driver: bridge

我正在尝试从'py'访问Winexe

最佳答案

假设您的意思是从一个容器内部运行另一个Docker容器,则可以通过以下几种方式完成此操作:

在容器内安装docker命令,然后:

  • 通过TCP / IP与托管Docker实例联系。为此,您必须将Docker主机公开给网络,这既不是默认设置,也不建议这样做。
  • 使用卷将Docker套接字(通常为/var/run/docker.sock)映射到您的容器中。这将允许容器内的docker命令直接联系主机实例。

  • 请注意,这实际上使容器root级别可以访问主机!我敢肯定,还有更多的方法可以做到这一点,但是方法2是我最常看到的方法。

    如果您打算在另一个已运行的Docker容器中运行另一个可执行文件,则也可以使用docker exec以上述方式执行此操作,或者在第二个容器中运行某种守护程序来接受命令并为您运行所需的命令。

    关于docker - 从另一个容器在Docker容器中运行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942469/

    相关文章:

    bash - 是否可以将Dockerfile中的ENV变量与正则表达式或包含之类的类似内容进行比较?

    docker - 在Docker中执行用户Cron作业的问题

    linux - docker compose : Error while loading shared libraries: libz. so.1:无法从共享对象映射段:不允许操作

    docker - 如何在 docker 上运行 Protractor ?

    docker-compose oci runtime error 找不到可执行文件(在链接容器中)

    python - DiD 或 UNIX 套接字的安全替代方案?

    docker - 如何将字典以及列表成员添加到键?

    Dockerfile 入口点无法切换用户

    docker - 如何在Docker容器中为非root用户设置卷权限

    docker - '/docker/hook' 没有注册路由