rustembedded/cross- 无法覆盖 linux 图片
rustembedded/cross- can't override linux image
我正在尝试使用 rustembedded/cross 交叉编译为 linux 但我需要覆盖默认图像,因为我需要 clang 而默认图像不提供。
根据他们的 documentation,您可以提供一个 docker 文件和一个配置文件来完成此操作。
这让我得到了一个 docker 文件:
FROM rustembedded/cross:x86_64-unknown-linux-gnu
RUN dpkg --add-architecture x86_64 && apt-get update && \
apt-get install --assume-yes --no-install-recommends \
libclang-dev \
clang
和 Cross.toml 配置文件:
[target.x86_64-unknown-linux-gnu]
image = "linux:v2"
然后,当我使用 docker build -f ./Dockerfile.x86_64-unknown-linux-gnu -t linux:v2 .
构建此映像时,它会提示我无法找到 dkpg
。即使我删除了那部分,它仍然告诉我找不到 apt-get
。
我可以在 docker 桌面访问它扩展的容器 shell,rustembedded/cross:x86_64-unknown-linux-gnu
,如果我 运行 dpkg
,它显示我的帮助命令。这很令人困惑,因为我的图像从它延伸但它不知道 dkpg
.
rustembedded/cross:x86_64-unknown-linux-gnu
是基于centos
,不是ubuntu
,看它的Dockerfile:
FROM ubuntu:16.04
COPY linux-image.sh /
RUN /linux-image.sh x86_64
FROM centos:7
它使用多阶段构建,最后一个 os 是 centos:7
。
您也可以通过下一个确认:
$ docker run --rm -it rustembedded/cross:x86_64-unknown-linux-gnu cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
我不知道你是如何通过手动 运行 得到 dpkg
的,肯定是你的步骤有问题。但是 centos
中的包系统是 yum
,你应该找到使用 yum
的相同方法来安装你的包。
$ docker run --rm -it rustembedded/cross:x86_64-unknown-linux-gnu yum version
Loaded plugins: fastestmirror, ovl
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Installed: 7/x86_64 213:96cbf4a3c83d0362309d530d515684dce3f40f63
Group-Installed: yum 14:302aa408884b4b89361d6bb1c41ceac40665f80e
version
我正在尝试使用 rustembedded/cross 交叉编译为 linux 但我需要覆盖默认图像,因为我需要 clang 而默认图像不提供。
根据他们的 documentation,您可以提供一个 docker 文件和一个配置文件来完成此操作。
这让我得到了一个 docker 文件:
FROM rustembedded/cross:x86_64-unknown-linux-gnu
RUN dpkg --add-architecture x86_64 && apt-get update && \
apt-get install --assume-yes --no-install-recommends \
libclang-dev \
clang
和 Cross.toml 配置文件:
[target.x86_64-unknown-linux-gnu]
image = "linux:v2"
然后,当我使用 docker build -f ./Dockerfile.x86_64-unknown-linux-gnu -t linux:v2 .
构建此映像时,它会提示我无法找到 dkpg
。即使我删除了那部分,它仍然告诉我找不到 apt-get
。
我可以在 docker 桌面访问它扩展的容器 shell,rustembedded/cross:x86_64-unknown-linux-gnu
,如果我 运行 dpkg
,它显示我的帮助命令。这很令人困惑,因为我的图像从它延伸但它不知道 dkpg
.
rustembedded/cross:x86_64-unknown-linux-gnu
是基于centos
,不是ubuntu
,看它的Dockerfile:
FROM ubuntu:16.04
COPY linux-image.sh /
RUN /linux-image.sh x86_64
FROM centos:7
它使用多阶段构建,最后一个 os 是 centos:7
。
您也可以通过下一个确认:
$ docker run --rm -it rustembedded/cross:x86_64-unknown-linux-gnu cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
我不知道你是如何通过手动 运行 得到 dpkg
的,肯定是你的步骤有问题。但是 centos
中的包系统是 yum
,你应该找到使用 yum
的相同方法来安装你的包。
$ docker run --rm -it rustembedded/cross:x86_64-unknown-linux-gnu yum version
Loaded plugins: fastestmirror, ovl
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Installed: 7/x86_64 213:96cbf4a3c83d0362309d530d515684dce3f40f63
Group-Installed: yum 14:302aa408884b4b89361d6bb1c41ceac40665f80e
version