从docker创建alpine linux iso-libburn权限被拒绝

从docker创建alpine linux iso-libburn权限被拒绝,docker,iso,alpine,Docker,Iso,Alpine,我一直在尝试按照标准说明在docker容器中构建alpine linux的iso映像,但由于libburn的原因,我似乎无法将.iso实际写入已装入的卷: >>> mkimage-x86_64: Creating alpine-standard-edge-x86_64.iso xorriso 1.4.8 : RockRidge filesystem manipulator, libburnia project. libburn : SORRY : Failed to

我一直在尝试按照标准说明在docker容器中构建alpine linux的iso映像,但由于libburn的原因,我似乎无法将.iso实际写入已装入的卷:

    >>> mkimage-x86_64: Creating alpine-standard-edge-x86_64.iso
xorriso 1.4.8 : RockRidge filesystem manipulator, libburnia project.

libburn : SORRY : Failed to open device (a pseudo-drive) : Permission denied
libburn : FATAL : Burn run failed
xorriso : FATAL : -abort_on 'FAILURE' encountered 'FATAL' during image writing
libisofs: MISHAP : Image write cancelled
xorriso : FAILURE : libburn indicates failure with writing.
这是尝试运行教程中下载的脚本的标准结果:

sh aports/scripts/mkimage.sh --tag edge --outdir /build2/ --arch x86_64 --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --profile standard
docker图像im使用:

FROM alpine:latest
RUN addgroup root abuild
RUN apk add --update \
    alpine-sdk \
   # build-base \
    apk-tools \
    alpine-conf \
    busybox \
    git \
    fakeroot \
    syslinux \
    xorriso \
    squashfs-tools \
    mtools \
    dosfstools \
    grub-efi \
  && rm -rf /var/cache/apk/*

COPY . /usr/src/app 
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/build
RUN touch /usr/src/app/build/worked.txt
RUN adduser -G abuild -g "Alpine Package Builder" -s /bin/sh -u 12345 -D builder
RUN echo "builder:newpass"|chpasswd


RUN chgrp -R abuild /usr/local;                                      \
    find /usr/local -type d | xargs chmod g+w;                        \
    echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/builder; \
    chmod 0440 /etc/sudoers.d/builder

WORKDIR /build2/
RUN git clone git://git.alpinelinux.org/aports
RUN chmod +x aports/scripts/mkimage.sh
RUN abuild-keygen -i -a
USER builder
我看过官方论坛,但是只有一篇帖子提到了类似的东西,但没有提及任何实际的决议


如果找不到解决方案,其他人能否推荐一个好的替代最小发行版,它可以通过脚本为x_86、x_64和rpi构建iso?

您可以使用脚本轻松创建自己的Alpine Linux iso映像

例如:

sudo./alpine制作虚拟机映像\
--图像格式qcow2\
--图像大小5G\
--包“ca证书git ssl_客户端”\
--脚本chroot\
alpine-$(日期+%Y-%m-%d).qcow2-./configure.sh

由于您创建的用户无法访问xorriso所需的伪设备,您将收到一个权限被拒绝的错误。我删除了所有的用户创建部分,只是以root的身份运行了整个过程,并且运行正常

以下是我使用的Dockerfile:

FROM alpine:latest

RUN apk add --no-cache \
    alpine-conf \
    alpine-sdk \
    apk-tools \
    dosfstools \
    grub-efi \
    mtools \
    squashfs-tools \
    syslinux \
    xorriso

WORKDIR /src

RUN git clone git://git.alpinelinux.org/aports

RUN chmod +x aports/scripts/mkimage.sh

RUN addgroup root abuild

RUN abuild-keygen -i -a -n

WORKDIR /build

ENTRYPOINT /src/aports/scripts/mkimage.sh

CMD "--tag edge --arch x86_64 --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --profile standard"

然后构建并运行

docker build-t阿尔卑斯iso.


docker run-v“$(pwd):/build“-it alpine iso

该“设备(伪驱动器)”是生成的iso,即alpine-standard-edge-x86_64.iso。因此,我希望您没有权限打开该文件(用于截断)或创建它。检查它是否已经存在以及目录的权限。这是否在容器中起作用是我面临的主要问题,我想在容器中部署一个脚本,以便在装入的卷中生成iso映像,阿尔卑斯网站的建议方式并不像我在最初的声明中所说的那样有效,但我会在docker内部尝试一下你的建议,看你的设置如何;你需要特权才能执行chroot,然后它就可以工作了。Alpine wiki上的页面以一个警告开始,它已经过时了……我已经用指向Alpine make vm image的链接替换了它。