簡體   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