| 59 |   | ==== Baseline Image | 
          
          
            |   | 59 | ==== Bare | 
          
          
            |   | 60 |  | 
          
          
            |   | 61 | This is a customized image, build off of Ubuntu Server 18.04 | 
          
          
            |   | 62 |  | 
          
          
            |   | 63 | [[CollapsibleStart]] | 
          
          
            |   | 64 | {{{#!dockerfile | 
          
          
            |   | 65 | FROM scratch as bare | 
          
          
            |   | 66 | ADD src/18.04-server-cloudimg-amd64-root.tar.xz            / | 
          
          
            |   | 67 | #docker optimizations for apt | 
          
          
            |   | 68 | RUN set -xe \ | 
          
          
            |   | 69 |     \ | 
          
          
            |   | 70 | # https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L85-L105 | 
          
          
            |   | 71 |         && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \ | 
          
          
            |   | 72 |         && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \ | 
          
          
            |   | 73 |         && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \ | 
          
          
            |   | 74 |         \ | 
          
          
            |   | 75 | # https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L109-L115 | 
          
          
            |   | 76 |         && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \ | 
          
          
            |   | 77 |         \ | 
          
          
            |   | 78 | # https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L118-L130 | 
          
          
            |   | 79 |         && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes \ | 
          
          
            |   | 80 |         \ | 
          
          
            |   | 81 | # https://github.com/docker/docker/blob/9a9fc01af8fb5d98b8eec0740716226fadb3735c/contrib/mkimage/debootstrap#L134-L151 | 
          
          
            |   | 82 |         && echo 'Apt::AutoRemove::SuggestsImportant "false";' > /etc/apt/apt.conf.d/docker-autoremove-suggests | 
          
          
            |   | 83 |  | 
          
          
            |   | 84 | ARG KERNEL_TYPE="generic" | 
          
          
            |   | 85 | ARG COMMON_PKGS="vim emacs git dnsutils" | 
          
          
            |   | 86 |  | 
          
          
            |   | 87 | ENV DEBIAN_FRONTEND=noninteractive \ | 
          
          
            |   | 88 |     TERM=linux | 
          
          
            |   | 89 | #set up apt sources | 
          
          
            |   | 90 | COPY files/apt/ /etc/apt/ | 
          
          
            |   | 91 | RUN wget -qO - https://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox | apt-key add - | 
          
          
            |   | 92 | #install bootloader and kernel, common packages | 
          
          
            |   | 93 | RUN apt update && apt install --no-install-recommends -fy \ | 
          
          
            |   | 94 |     linux-image-${KERNEL_TYPE} \ | 
          
          
            |   | 95 |     linux-headers-${KERNEL_TYPE} \ | 
          
          
            |   | 96 |     grub-pc \ | 
          
          
            |   | 97 |     software-properties-common \ | 
          
          
            |   | 98 |     build-essential \ | 
          
          
            |   | 99 |     ssh \ | 
          
          
            |   | 100 |     ${COMMON_PKGS} | 
          
          
            |   | 101 |      | 
          
          
            |   | 102 | #disable auto updates | 
          
          
            |   | 103 | RUN apt -fy purge unattended-upgrades | 
          
          
            |   | 104 |  | 
          
          
            |   | 105 | #create users with "blank" passwords. WARNING, very insecure!!! | 
          
          
            |   | 106 | RUN echo "root:root" | chpasswd && \ | 
          
          
            |   | 107 |     sed -i 's/^\(root:\)[^:]*\(:.*\)$/\1\2/' /etc/shadow && \ | 
          
          
            |   | 108 |     cp -r /etc/skel/. /root/ | 
          
          
            |   | 109 |  | 
          
          
            |   | 110 | COPY files/fstab /etc/fstab | 
          
          
            |   | 111 | COPY files/grub /etc/default/grub | 
          
          
            |   | 112 | RUN rm /etc/default/grub.d/* | 
          
          
            |   | 113 | COPY files/00-netplan.yaml /etc/netplan/00-netplan.yaml | 
          
          
            |   | 114 | COPY files/ssh/server/* /etc/ssh/ | 
          
          
            |   | 115 | COPY files/ssh/client/* /root/.ssh/ | 
          
          
            |   | 116 |  | 
          
          
            |   | 117 | #fix ssh key permissions | 
          
          
            |   | 118 | RUN chmod 400 /etc/ssh/ssh_host_*_key && chmod 444 /etc/ssh/ssh_host_*_key.pub | 
          
          
            |   | 119 |  | 
          
          
            |   | 120 | #16.04 and prior use ifupdown | 
          
          
            |   | 121 | #COPY dhcp/hostname-ifupdown /etc/dhcp/dhclient-exit-hooks.d/hostname | 
          
          
            |   | 122 | #18.04 uses netplan and networkd-dispatcher | 
          
          
            |   | 123 | COPY files/dhcp/hostname-networkd /etc/networkd-dispatcher/routable.d/20-hostname.sh | 
          
          
            |   | 124 | RUN chmod +x /etc/networkd-dispatcher/routable.d/20-hostname.sh | 
          
          
            |   | 125 |  | 
          
          
            |   | 126 | #clean up build | 
          
          
            |   | 127 | RUN rm -f /etc/apt/apt.conf.d/01proxy && \ | 
          
          
            |   | 128 |     rm -rf /var/lib/apt/lists/* && \ | 
          
          
            |   | 129 |     apt clean && \ | 
          
          
            |   | 130 |     apt autoclean | 
          
          
            |   | 131 |  | 
          
          
            |   | 132 | #commands are rune when container is started | 
          
          
            |   | 133 | #workaround for "locked" files in docker-build | 
          
          
            |   | 134 | #this may delay image saving | 
          
          
            |   | 135 | COPY files/late_commands.sh /root/late_commands.sh | 
          
          
            |   | 136 | ENTRYPOINT ["/root/late_commands.sh"] | 
          
          
            |   | 137 | CMD ["/bin/bash"] | 
          
          
            |   | 138 | }}} | 
          
          
            |   | 139 |  | 
          
          
            |   | 140 |  | 
          
          
            |   | 141 | [[CollapsibleEnd]] | 
          
          
            |   | 142 |  | 
          
          
            |   | 143 | ==== Baseline |