【问题标题】:Docker compose file for linux Debian and Arch用于 linux Debian 和 Arch 的 Docker 撰写文件
【发布时间】:2020-02-12 11:09:05
【问题描述】:

希望我做得对...

首先,我们将 docker-compose 与 yml 文件一起使用。
看起来像这样:

sudo docker-compose -f docker-compose.yml up -d

在 yml 文件中,我们有类似的内容:

version: '3.4'
services:
  MyContainer:
    image: "MyContainer:latest"
    container_name: MyContainer
    restart: always
    environment:
        - DISPLAY=unix$DISPLAY
        - QT_X11_NO_MITSHM=1
    devices:
        - /dev/dri:/dev/dri
    volumes:
        - /tmp/.X11-unix:/tmp/.X11-unix:rw
        - /dev/dri:/dev/dri
        - /usr/lib/x86_64-linux-gnu/libXv.so.1:/usr/lib/x86_64-linux-gnu/libXv.so.1:rw
        - ~/MyFiles/:/root/Myfiles
        - ~:/root/home

现在问题开始了。我们团队使用了两个操作系统。一次是 Ubuntu,然后是 Arch 和 Manjaro。一个有经验的 Linux 用户可能知道这在 Arch 上是行不通的。因为 x86_64-linux-gnu 是 Ubuntu 中的一个文件夹。这是 Debian/Ubuntu 系统上的一个非常特殊的文件夹。 Arch/Manjaro 和几乎所有其他 Linux 发行版上的等价物是 /usr/lib 或 /usr/lib64。

当然,一个技巧是让这个文件夹链接到 lib,但我不想对没有 Ubuntu 的每个新团队成员/机器都这样做。

所以这些都是要提供的前期信息。 我的问题是:

您认为解决此问题的最佳方法是什么?

我在 Google 上搜索过,但要么我使用了错误的关键字,要么人们没有这个问题,因为他们设计的容器更智能。

我知道可以创建 docker 卷,然后在 docker-compose 文件中使用,但为此,我们需要在我们拥有的所有 PC、笔记本电脑和服务器上重新运行设置,如果想避免这种情况可能...

我还有很多东西要学,所以如果你有更多的经验和知识,请善待并解释我的错误。

问候, 斯蒂芬

【问题讨论】:

    标签: linux docker docker-compose


    【解决方案1】:

    如果您尝试使用主机显示、主机库、主机文件系统和主机硬件设备,那么您从 Docker 中得到的唯一好处就是需要 root 权限才能运行的不方便的打包机制。构建二进制文件并直接在主机上运行应用程序会容易得多。

    如果您必须在 Docker 中运行它,则映像应该是独立的:运行应用程序所需的所有代码和库都需要在映像中并复制到 Dockerfile 中。大多数图像都以FROM 一些 Linux 发行版开头(可能间接通过语言运行时),因此您需要使用其包管理器安装所需的库。

    FROM ubuntu:18.04
    RUN apt-get update \
     && apt-get install --no-install-recommends --assume-yes \
          libxv1
    ...
    

    将二进制文件或库绑定到容器中不仅会导致您描述的文件系统不一致,而且在某些情况下还会导致二进制兼容性问题。例如,绑定挂载在 MacOS 主机上无法正常工作。 (早期在 Docker 容器中使用 Docker 套接字的方法建议将 /usr/bin/docker 绑定安装到容器中,但是如果 CentOS 主机 Docker 是针对与 Ubuntu 容器 Docker 不同的共享库构建的,这可能会遇到问题。)

    【讨论】:

    • 感谢您的澄清!我需要与第一手制作 docker 文件的人谈谈,以改变这种情况,但据我所知,这将是最好的方法。当我这样做时会将其标记为答案。
    【解决方案2】:

    docker compose 中的volumes 部分支持环境变量。您可以利用它,它将是特定于机器的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      相关资源
      最近更新 更多