bootstrap-vz/bootstrapvz/providers/docker/tasks/settings.py
2018-02-14 03:53:33 +00:00

51 lines
1.9 KiB
Python

from bootstrapvz.base import Task
from bootstrapvz.common import phases
from bootstrapvz.common.tasks import apt, bootstrap, dpkg
from . import assets
import os
import shutil
class DpkgUnsafeIo(Task):
# https://github.com/moby/moby/blob/e2e5d4bc9da5ba17bb2822909611f8300fdd80f0/contrib/mkimage/debootstrap#L94
description = 'Force dpkg not to call sync()'
phase = phases.os_installation
predecessors = [dpkg.CreateDpkgCfg]
successors = [bootstrap.Bootstrap]
@classmethod
def run(cls, info):
dpkgcfg_path = os.path.join(info.root, 'etc/dpkg/dpkg.cfg.d')
shutil.copy(
os.path.join(assets, 'docker-apt-speedup'),
os.path.join(info.root, dpkgcfg_path, 'docker-apt-speedup'))
class AutoRemoveKernel(Task):
# https://github.com/moby/moby/blob/e2e5d4bc9da5ba17bb2822909611f8300fdd80f0/contrib/mkimage/debootstrap#L87
description = 'Do not prevent autoremove of current kernel'
phase = phases.package_installation
successors = [apt.AptUpdate]
@classmethod
def run(cls, info):
# this file is one APT creates to make sure we don't "autoremove" our currently
# in-use kernel, which doesn't really apply to debootstraps/Docker images that
# don't even have kernels installed
autoremovekernels = os.path.join(info.root, 'etc/apt/apt.conf.d/01autoremove-kernels')
if os.path.isfile(autoremovekernels):
os.remove(autoremovekernels)
class SystemdContainer(Task):
# https://github.com/systemd/systemd/blob/aa0c34279ee40bce2f9681b496922dedbadfca19/src/basic/virt.c#L434
description = 'Make systemd-detect-virt return "docker"'
phase = phases.package_installation
successors = [apt.AptUpdate]
@classmethod
def run(cls, info):
os.makedirs(os.path.join(info.root, 'run/systemd'))
with open(os.path.join(info.root, 'run/systemd/container'), 'w') as systemd:
systemd.write('docker')