NAME

API::Docker::Type::HostConfig - Container configuration that depends on the host we are running on

VERSION

version 0.004

DESCRIPTION

Generated from the HostConfig definition of spec/v1.51.yaml, which is allOf [ $ref Resources, { 39 properties } ]. The reference becomes a superclass, so a HostConfig carries the 31 fields of API::Docker::Type::Resources as well as the 39 declared here -- 70 in all. See "allOf becomes inheritance" in API::Docker::Type.

binds

A list of volume bindings for this container. Each volume binding is a string in one of these forms:

  • host-src:container-dest[:options] to bind-mount a host path into the container. Both host-src, and container-dest must be an absolute path.

  • volume-name:container-dest[:options] to bind-mount a volume managed by a volume driver into the container. container-dest must be an absolute path.

options is an optional, comma-delimited list of:

  • nocopy disables automatic copying of data from the container path to the volume. The nocopy flag only applies to named volumes.

  • [ro|rw] mounts a volume read-only or read-write, respectively. If omitted or set to rw, volumes are mounted read-write.

  • [z|Z] applies SELinux labels to allow or deny multiple containers to read and write to the same volume. z: a shared content label is applied to the content. This label indicates that multiple containers can share the volume content, for both reading and writing. Z: a private unshared label is applied to the content. This label indicates that only the current container can use a private volume. Labeling systems such as SELinux require proper labels to be placed on volume content that is mounted into a container. Without a label, the security system can prevent a container's processes from using the content. By default, the labels set by the host operating system are not modified.

  • [[r]shared|[r]slave|[r]private] specifies mount propagation behavior. This only applies to bind-mounted volumes, not internal volumes or named volumes. Mount propagation requires the source mount point (the location where the source directory is mounted in the host operating system) to have the correct propagation properties. For shared volumes, the source mount point must be set to shared. For slave volumes, the mount must be set to either shared or slave.

container_id_file

Path to a file where the container ID is written. Serialised as ContainerIDFile -- spelled out, because deriving it from the Perl name would produce ContainerIdFile.

log_config

The logging configuration for this container. See API::Docker::Type::HostConfig::LogConfig.

network_mode

Network mode to use for this container. Supported standard values are: bridge, host, none, and container:<name|id>. Any other value is taken as a custom network's name to which this container should connect to.

port_bindings

PortMap describes the mapping of container ports to host ports, using the container's port-number and protocol as key in the format <port>/<protocol>, for example, 80/udp.

If a container's port is mapped for multiple protocols, separate entries are added to the mapping table. In the swagger this is a $ref to PortMap, a definition that is nothing but additionalProperties, so it becomes a hash here rather than a class of its own, and the daemon does answer with null for a port that is exposed but not published. See API::Docker::Type::PortBinding. The keys are the caller's data and are never translated.

restart_policy

The behavior to apply when the container exits. See API::Docker::Type::RestartPolicy.

auto_remove

Automatically remove the container when the container's process exits. This has no effect if RestartPolicy is set.

volume_driver

Driver that this container uses to mount volumes.

volumes_from

A list of volumes to inherit from another container, specified in the form <container name>[:<ro|rw>].

mounts

Specification for mounts to be added to the container. See API::Docker::Type::Mount.

console_size

Initial console size, as an [height, width] array.

annotations

Arbitrary non-identifying metadata attached to container and provided to the runtime when the container is started. The keys are the caller's data and are never translated.

cap_add

A list of kernel capabilities to add to the container. Conflicts with option 'Capabilities'.

cap_drop

A list of kernel capabilities to drop from the container. Conflicts with option 'Capabilities'.

cgroupns_mode

Cgroup namespace mode for the container. Possible values are:

  • "private": the container runs in its own private cgroup namespace

  • "host": use the host system's cgroup namespace

If not specified, the daemon default is used, which can either be "private" or "host", depending on daemon version, kernel support and configuration.

dns

A list of DNS servers for the container to use.

dns_options

A list of DNS options.

A list of DNS search domains.

extra_hosts

A list of hostnames/IP mappings to add to the container's /etc/hosts file. Specified in the form ["hostname:IP"].

group_add

A list of additional groups that the container process will run as.

ipc_mode

IPC sharing mode for the container. Possible values are:

  • "none": own private IPC namespace, with /dev/shm not mounted

  • "private": own private IPC namespace

  • "shareable": own private IPC namespace, with a possibility to share it with other containers

  • "container:<name|id>": join another (shareable) container's IPC namespace

  • "host": use the host system's IPC namespace

If not specified, daemon default is used, which can either be "private" or "shareable", depending on daemon version and configuration.

cgroup

Cgroup to use for the container.

A list of links for the container in the form container_name:alias.

oom_score_adj

An integer value containing the score given to the container in order to tune OOM killer preferences.

pid_mode

Set the PID (Process) Namespace mode for the container. It can be either:

  • "container:<name|id>": joins another container's PID namespace

  • "host": use the host's PID namespace inside the container

privileged

Gives the container full access to the host.

publish_all_ports

Allocates an ephemeral host port for all of a container's exposed ports.

Ports are de-allocated when the container stops and allocated when the container starts. The allocated port might be changed when restarting the container.

The port is selected from the ephemeral port range that depends on the kernel. For example, on Linux the range is defined by /proc/sys/net/ipv4/ip_local_port_range.

readonly_rootfs

Mount the container's root filesystem as read only.

security_opt

A list of string values to customize labels for MLS systems, such as SELinux.

storage_opt

Storage driver options for this container, in the form {"size": "120G"}. The keys are the caller's data and are never translated.

tmpfs

A map of container directories which should be replaced by tmpfs mounts, and their corresponding mount options. For example:

{ "/run": "rw,noexec,nosuid,size=65536k" }

The keys are the caller's data and are never translated.

uts_mode

UTS namespace to use for the container. Serialised as UTSMode -- spelled out, because deriving it from the Perl name would produce UtsMode.

userns_mode

Sets the usernamespace mode for the container when usernamespace remapping option is enabled.

shm_size

Size of /dev/shm in bytes. If omitted, the system uses 64MB.

sysctls

A list of kernel parameters (sysctls) to set in the container.

This field is omitted if not set. The swagger's example is {"net.ipv4.ip_forward": "1"}. The keys are the caller's data and are never translated.

runtime

Runtime to use with this container.

isolation

Isolation technology of the container. (Windows only). The swagger enumerates default, process, hyperv and the empty string.

masked_paths

The list of paths to be masked inside the container (this overrides the default set of paths).

readonly_paths

The list of paths to be set as read-only inside the container (this overrides the default set of paths).

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/Getty/p5-api-docker/issues.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHOR

Torsten Raudssus <getty@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.