def load_base_image(): '''Create base image from dockerfile instructions and return the image''' base_image, dockerfile_lines = dhelper.get_dockerfile_base() # try to get image metadata if not container.check_image(base_image.repotag): # if no base image is found, give a warning and continue if not container.pull_image(base_image.repotag): logger.warning( errors.cannot_find_image.format(imagetag=base_image.repotag)) try: base_image.load_image() except NameError as error: logger.warning('Error in loading base image: ' + str(error)) base_image.origins.add_notice_to_origins(dockerfile_lines, Notice(str(error), 'error')) except subprocess.CalledProcessError as error: logger.warning('Error in loading base image: ' + str(error.output, 'utf-8')) base_image.origins.add_notice_to_origins( dockerfile_lines, Notice(str(error.output, 'utf-8'), 'error')) except IOError as error: logger.warning('Error in loading base image: ' + str(error)) base_image.origins.add_notice_to_origin(dockerfile_lines, Notice(str(error), 'error')) return base_image
def setup(dockerfile=None, image_tag_string=None): '''Any initial setup''' # generate random names for image, container, and tag general.initialize_names() # load the cache cache.load() # load dockerfile if present if dockerfile: dhelper.load_docker_commands(dockerfile) # check if the docker image is present if image_tag_string: if not container.check_image(image_tag_string): # if no docker image is present, try to pull it if not container.pull_image(image_tag_string): logger.fatal( errors.cannot_find_image.format(imagetag=image_tag_string)) sys.exit() # create temporary working directory if not os.path.exists(constants.temp_folder): os.mkdir(constants.temp_folder) # set up folders for rootfs operations rootfs.set_up()