layout | title | permalink | redirect_from | ||
---|---|---|---|---|---|
default |
Conversion |
/conversion/ |
|
- TOC {:toc}
This document outlines all possible conversion details regarding docker-compose.yaml
values to Kubernetes / OpenShift artifacts.
Supported | Compose Version | Docker Engine Version |
---|---|---|
N | 3.8 | 19.03.0+ |
N | 3.7 | 18.06.0+ |
N | 3.6 | 18.02.0+ |
N | 3.5 | 17.12.0+ |
N | 3.4 | 17.09.0+ |
Y | 3.3 | 17.06.0+ |
Y | 3.2 | 17.04.0+ |
Y | 3.1 | 1.13.1+ |
Y | 3.0 | 1.13.0+ |
Y | 2.4 | 17.12.0+ |
Y | 2.3 | 17.06.0+ |
Y | 2.2 | 1.13.0+ |
Y | 2.1 | 1.12.0+ |
Y | 2.0 | 1.10.0+ |
Note: We don't support anything 3.4 and above at the moment. It is reccomended to specify version: "3.3"
in your docker-compose.yaml
and converting. We use a library called libcompose that supports up to version 3.3
. If you are interested in adding additional support, please open up a PR!
Glossary:
- ✓: Converts
- -: Not in this Docker Compose Version
- n: Not yet implemented
- x: Not applicable / no 1-1 conversion
Keys | V1 | V2 | V3 | Kubernetes / OpenShift | Notes |
---|---|---|---|---|---|
build | ✓ | ✓ | ✓ | Builds/Pushes to Docker repository. See user guide on build and push image | |
build: context | ✓ | ✓ | ✓ | ||
build: dockerfile | ✓ | ✓ | ✓ | ||
build: args | n | n | n | ||
build: cache_from | - | - | n | ||
cap_add | ✓ | ✓ | ✓ | Container.SecurityContext.Capabilities.Add | |
cap_drop | ✓ | ✓ | ✓ | Container.SecurityContext.Capabilities.Drop | |
command | ✓ | ✓ | ✓ | Container.Args | |
configs | n | n | ✓ | ||
configs: short-syntax | n | n | ✓ | Only create configMap | |
configs: long-syntax | n | n | ✓ | If target path is /, ignore this and only create configMap | |
cgroup_parent | x | x | x | Not supported within Kubernetes. See issue kubernetes/kubernetes#11986 | |
container_name | ✓ | ✓ | ✓ | Metadata.Name + Deployment.Spec.Containers.Name | |
credential_spec | x | x | x | Only applicable to Windows containers | |
deploy | - | - | ✓ | ||
deploy: mode | - | - | ✓ | ||
deploy: replicas | - | - | ✓ | Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas | |
deploy: placement | - | - | ✓ | Affinity | |
deploy: update_config | - | - | ✓ | Workload.Spec.Strategy | Deployment / DeploymentConfig |
deploy: resources | - | - | ✓ | Containers.Resources.Limits.Memory / Containers.Resources.Limits.CPU | Support for memory as well as cpu |
deploy: restart_policy | - | - | ✓ | Pod generation | This generated a Pod, see the user guide on restart |
deploy: labels | - | - | ✓ | Workload.Metadata.Labels | Only applied to workload resource |
devices | x | x | x | Not supported within Kubernetes, See issue kubernetes/kubernetes#5607 | |
depends_on | x | x | x | ||
dns | x | x | x | Not used within Kubernetes. Kubernetes uses a managed DNS server | |
dns_search | x | x | x | See dns key |
|
domainname | ✓ | ✓ | ✓ | SubDomain | |
tmpfs | ✓ | ✓ | ✓ | Containers.Volumes.EmptyDir | Creates emptyDirvolume with medium set to Memory & mounts given directory inside container |
entrypoint | ✓ | ✓ | ✓ | Container.Command | |
env_file | n | n | ✓ | ||
environment | ✓ | ✓ | ✓ | Container.Env | |
expose | ✓ | ✓ | ✓ | Service.Spec.Ports | |
endpoint_mode | n | n | ✓ | If endpoint_mode=vip, the created Service will be forced to set to NodePort type | |
extends | ✓ | ✓ | ✓ | Extends by utilizing the same image supplied | |
external_links | x | x | x | Kubernetes uses a flat-structure for all containers and thus external_links does not have a 1-1 conversion | |
extra_hosts | n | n | n | ||
group_add | ✓ | ✓ | ✓ | ||
healthcheck | - | n | ✓ | ||
hostname | ✓ | ✓ | ✓ | HostName | |
image | ✓ | ✓ | ✓ | Deployment.Spec.Containers.Image | |
isolation | x | x | x | Not applicable as this applies to Windows with HyperV support | |
labels | ✓ | ✓ | ✓ | Metadata.Annotations | |
links | x | x | x | All containers in the same pod are accessible in Kubernetes | |
logging | x | x | x | Kubernetes has built-in logging support at the node-level | |
network_mode | x | x | x | Kubernetes uses its own cluster networking | |
networks | ✓ | ✓ | ✓ | See networks key |
|
networks: aliases | x | x | x | See networks key |
|
networks: addresses | x | x | x | See networks key |
|
pid | ✓ | ✓ | ✓ | HostPID | |
ports | ✓ | ✓ | ✓ | Service.Spec.Ports | |
ports: short-syntax | ✓ | ✓ | ✓ | Service.Spec.Ports | |
ports: long-syntax | - | - | ✓ | Service.Spec.Ports | |
secrets | - | - | ✓ | Secret | External Secret is not Supported |
secrets: short-syntax | - | - | ✓ | Secret | External Secret is not Supported |
secrets: long-syntax | - | - | ✓ | Secret | External Secret is not Supported |
security_opt | x | x | x | Kubernetes uses its own container naming scheme | |
stop_grace_period | ✓ | ✓ | ✓ | TerminationGracePeriodSeconds | |
stop_signal | x | x | x | Not supported within Kubernetes. See issue kubernetes/kubernetes#30051 | |
sysctls | n | n | n | ||
ulimits | x | x | x | Not supported within Kubernetes. See issue kubernetes/kubernetes#3595 | |
userns_mode | x | x | x | Not supported within Kubernetes and ignored in Docker Compose Version 3 | |
volumes | ✓ | ✓ | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
volumes: short-syntax | ✓ | ✓ | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
volumes: long-syntax | - | - | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
restart | ✓ | ✓ | ✓ | ||
Volume | x | x | x | ||
driver | x | x | x | ||
driver_opts | x | x | x | ||
external | x | x | x | ||
labels | x | x | x | ||
Network | x | x | x | ||
driver | x | x | x | ||
driver_opts | x | x | x | ||
enable_ipv6 | x | x | x | ||
ipam | x | x | x | ||
internal | x | x | x | ||
labels | x | x | x | ||
external | x | x | x |