【问题标题】:Are docker images bound to a specific operating system?docker 镜像是否绑定到特定的操作系统?
【发布时间】:2020-11-29 11:00:58
【问题描述】:

我对 DOCKER 相当陌生,据我所知,它应该能够独立于目标操作系统移植软件。但是,我遇到了一些使用“run_docker.sh”文件的项目,这些文件具有以下命令:Whole script here

docker run \
    $docker_devices \
    -v /opt/xilinx/dsa:/opt/xilinx/dsa \
    -v /opt/xilinx/overlaybins:/opt/xilinx/overlaybins \
    -e USER=$user -e UID=$uid -e GID=$gid \
    -v /dev/shm:/dev/shm \
    -v $HERE:/workspace \
    -w /workspace \
    -it \
    --rm \
    --network=host \
    $IMAGE_NAME \
    bash

显然 /opt/ 和 /dev/ 是 unix 特定文件夹 - 是否可以将它们移植到 Windows?这是 Docker 的“坏”用例吗?是否可以在 Windows 机器上执行一些更改的 docker run 命令?

【问题讨论】:

    标签: linux windows docker unix operating-system


    【解决方案1】:

    嗯,是的,也不是。

    这里我们要具体一点:

    1. Docker 作为软件可以安装在很多操作系统上,例如对于 Windows:https://docs.docker.com/docker-for-windows/

    2. 安装后,Docker 本身将在其自己的操作系统中运行,因此您可以在 Unix 和 Windows 模式之间切换。 https://forums.docker.com/t/cli-to-switch-between-linux-and-windows-images/30297

      因此每个图像都将在 linux 或 windows 中加载,结构也是如此(例如文件/文件夹结构)

      加载映像后,您可以在 docker 容器中运行许多操作系统,例如您希望的每个版本的 Windows 和几乎无限数量的 Linux 操作系统,例如Ubuntu:https://hub.docker.com/_/ubuntu

    【讨论】:

    • 所以为了让这个脚本运行,我应该创建一个使用 UNIX 系统的 docker 映像,然后在这个系统中启动 docker 文件(所以是 docker 容器内的 docker 容器) - 因为当我运行 command_run.sh 它将失败,因为找不到像 /dev/ 这样的文件夹
    • 嗯,是的,也不是。您尝试使用 -v FROM /dev/shm TO /dev/shm 绑定一个卷意味着 docker 命令等待 docker 内的类 Unix 文件系统和容器内的类 Unix 文件系统。如果您在 Windows 上使用 docker,即使您修复了所有问题,它也可能会出现问题,这是一个已知问题。考虑将您的卷(-v 属性)更改为命名卷(docs.docker.com/storage/volumes)命名卷由 docker 软件本身管理,您不必关心至少一侧
    猜你喜欢
    • 2020-12-20
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多