Skip to content
Permalink
master
Switch branches/tags
Go to file
@cdrage
Latest commit ff4a65c Jan 13, 2022 History
This PR adds the new Kompose site!

Go preview it at https://kompose.io

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
15 contributors

Users who have contributed to this file

@cdrage @hangyan @surajnarwade @gitlawr @xianlubird @kadel @xavierleune @mudverma @asifdxtreme @lexcao @jvitor83 @jonathanperret
layout title permalink redirect_from
default
Conversion
/conversion/
/docs/conversion.md/
/docs/conversion/

Conversion Matrix

  • TOC {:toc}

This document outlines all possible conversion details regarding docker-compose.yaml values to Kubernetes / OpenShift artifacts.

Version Table

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!

Conversion Table

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