繁体   English   中英

Docker 为 linux Debian 和 Arch 编写文件

[英]Docker compose file for linux Debian and Arch

希望我做对了......

首先我们使用 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 Distro 上的等价物是 /usr/lib 或 /usr/lib64。

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

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

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

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

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

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

问候,斯特凡

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM