:lastproofread: 2024-07-03
#########
Container
#########
The VyOS container implementation is based on `Podman `_ as
a deamonless container engine.
*************
Configuration
*************
.. cfgcmd:: set container name image
Sets the image name in the hub registry
.. code-block:: none
set container name mysql-server image mysql:8.0
If a registry is not specified, Docker.io will be used as the container
registry unless an alternative registry is specified using
**set container registry ** or the registry is included
in the image name
.. code-block:: none
set container name mysql-server image quay.io/mysql:8.0
.. cfgcmd:: set container name entrypoint
Override the default entrypoint from the image for a container.
.. cfgcmd:: set container name command
Override the default command from the image for a container.
.. cfgcmd:: set container name arguments
Set the command arguments for a container.
.. cfgcmd:: set container name host-name
Set the host name for a container.
.. cfgcmd:: set container name allow-host-pid
The container and the host share the same process namespace.
This means that processes running on the host are visible inside the
container, and processes inside the container are visible on the host.
The command translates to "--pid host" when the container is created.
.. cfgcmd:: set container name allow-host-networks
Allow host networking in a container. The network stack of the container is
not isolated from the host and will use the host IP.
The command translates to "--net host" when the container is created.
.. note:: **allow-host-networks** cannot be used with **network**
.. cfgcmd:: set container name network
Attaches user-defined network to a container.
Only one network must be specified and must already exist.
.. cfgcmd:: set container name network address
Optionally set a specific static IPv4 or IPv6 address for the container.
This address must be within the named network prefix.
.. note:: The first IP in the container network is reserved by the
engine and cannot be used
.. cfgcmd:: set container name description
Set a container description
.. cfgcmd:: set container name environment value
Add custom environment variables.
Multiple environment variables are allowed.
The following commands translate to "-e key=value" when the container
is created.
.. code-block:: none
set container name mysql-server environment MYSQL_DATABASE value 'zabbix'
set container name mysql-server environment MYSQL_USER value 'zabbix'
set container name mysql-server environment MYSQL_PASSWORD value 'zabbix_pwd'
set container name mysql-server environment MYSQL_ROOT_PASSWORD value 'root_pwd'
.. cfgcmd:: set container name port source
.. cfgcmd:: set container name port destination
.. cfgcmd:: set container name port protocol
Publish a port for the container.
.. code-block:: none
set container name zabbix-web-nginx-mysql port http source 80
set container name zabbix-web-nginx-mysql port http destination 8080
set container name zabbix-web-nginx-mysql port http protocol tcp
.. cfgcmd:: set container name volume source
.. cfgcmd:: set container name volume destination
Mount a volume into the container
.. code-block:: none
set container name coredns volume 'corefile' source /config/coredns/Corefile
set container name coredns volume 'corefile' destination /etc/Corefile
.. cfgcmd:: set container name volume mode
Volume is either mounted as rw (read-write - default) or ro (read-only)
.. cfgcmd:: set container name uid
.. cfgcmd:: set container name gid
Set the User ID or Group ID of the container
.. cfgcmd:: set container name restart [no | on-failure | always]
Set the restart behavior of the container.
- **no**: Do not restart containers on exit
- **on-failure**: Restart containers when they exit with a non-zero
exit code, retrying indefinitely (default)
- **always**: Restart containers when they exit, regardless of status,
retrying indefinitely
.. cfgcmd:: set container name cpu-quota
This specifies the number of CPU resources the container can use.
Default is 0 for unlimited.
For example, 1.25 limits the container to use up to 1.25 cores
worth of CPU time.
This can be a decimal number with up to three decimal places.
The command translates to "--cpus=" when the container is created.
.. cfgcmd:: set container name memory
Constrain the memory available to the container.
Default is 512 MB. Use 0 MB for unlimited memory.
.. cfgcmd:: set container name device source
.. cfgcmd:: set container name device destination
Add a host device to the container.
.. cfgcmd:: set container name capability
Set container capabilities or permissions.
- **net-admin**: Network operations (interface, firewall, routing tables)
- **net-bind-service**: Bind a socket to privileged ports
(port numbers less than 1024)
- **net-raw**: Permission to create raw network sockets
- **setpcap**: Capability sets (from bounded or inherited set)
- **sys-admin**: Administration operations (quotactl, mount, sethostname,
setdomainame)
- **sys-time**: Permission to set system clock
.. cfgcmd:: set container name sysctl parameter value
Set container sysctl values.
The subset of possible parameters are:
- Kernel Parameters: kernel.msgmax, kernel.msgmnb, kernel.msgmni, kernel.sem,
kernel.shmall, kernel.shmmax, kernel.shmmni, kernel.shm_rmid_forced
- Parameters beginning with fs.mqueue.*
- Parameters beginning with net.* (only if user-defined network is used)
.. cfgcmd:: set container name label