作为背景,我有一个自定义的 Ubuntu LiveUSB,它会自动启动到“试用”,操作系统将预装应用程序,我已经将这些应用程序刻录到 ISO 本身中。
它工作得很好,但我一直遇到自动化过程的问题。
而不是每次都手动完成,(因为我的 bash 脚本在我第一次再次尝试时不断得到不同的结果)我正在考虑使用准备修改的 ISO 中解压文件生成一个 docker 镜像,然后在卷中运行带有脚本的容器 (docker run -v $(pwd)/bin:/data myimage /data/myscript.sh),它将修改内容,将其打包回 ISO 并将 ISO 保存在 /数据供我抓取和分发。
FROM ubuntu:16.04
MAINTAINER Myself
ENV ISO_FILE="ubuntu-16.04.3-desktop-amd64.iso" \
OS_VERSION="16.04.3"
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y squashfs-tools genisoimage gnupg2 \
nodejs rsync build-essential libc6-dev-i386 \
wget
# Make directories
RUN mkdir /data
RUN mkdir -p /root/workspace
# Download ubuntu iso
WORKDIR /root/workspace
RUN wget http://releases.ubuntu.com/$OS_VERSION/$ISO_FILE …
Run Code Online (Sandbox Code Playgroud) 所以我的Dockerfile是这样写的:
# set env vars for linux user
ENV LINUX_USER="kbuser"
...
... # other stuff
...
USER kbuser
Run Code Online (Sandbox Code Playgroud)
但是我想用
USER $LINUX_USER
Run Code Online (Sandbox Code Playgroud)
这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。
我该如何解决?
谢谢。