Docker compose conversion support
Behind the scenes, we use kompose.io to perform the initial translation from docker-compose.yml to the bunnyshell.yaml definition.
The table below states the support for each possible Docker Compose key.
| Keys | Supported | Kubernetes | Notes |
|---|---|---|---|
| build | yes | Builds/Pushes to Docker repository. | |
| build: context | yes | ||
| build: dockerfile | yes | ||
| build: args | yes | ||
| build: cache_from | no | ||
| cap_add, cap_drop | yes | Pod.Spec.Container.SecurityContext.Capabilities.Add/Drop | |
| command | yes | Pod.Spec.Container.Args | |
| configs | yes | ||
| configs: short-syntax | yes | Only create configMap | |
| configs: long-syntax | yes | If target path is /, ignore this and only create configMap | |
| cgroup_parent | n/a | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/11986 | |
| container_name | yes | Metadata.Name + Deployment.Spec.Containers.Name | |
| credential_spec | no | Only applicable to Windows containers | |
| deploy | yes | ||
| deploy: mode | yes | ||
| deploy: replicas | yes | Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas | |
| deploy: placement | yes | Pod.Spec.Affinity | |
| deploy: update_config | yes | Workload.Spec.Strategy | Deployment / DeploymentConfig |
| deploy: resources | yes | Containers.Resources.Limits.Memory / Containers.Resources.Limits.CPU | Support for memory as well as cpu |
| deploy: restart_policy | yes | Pod generation | This generated a Pod, see the user guide on restart |
| deploy: labels | yes | Workload.Metadata.Labels | Only applied to workload resource |
| devices | n/a | Not supported within Kubernetes, See issue https://github.com/kubernetes/kubernetes/issues/5607 | |
| depends_on | n/a | ||
| dns | n/a | Not used within Kubernetes. Kubernetes uses a managed DNS server | |
| dns_search | n/a | See dns key | |
| domainname | yes | ||
| tmpfs | yes | Creates emptyDirvolume with medium set to Memory & mounts given directory inside container | |
| entrypoint | yes | ||
| env_file | yes | ||
| environment | yes | ||
| expose | yes | ||
| endpoint_mode | yes | If endpoint_mode=vip, the created Service will be forced to set to NodePort type | |
| extends | yes | Extends by utilizing the same image supplied | |
| external_links | n/a | Kubernetes uses a flat-structure for all containers and thus external_links does not have a 1-1 conversion | |
| extra_hosts | no | ||
| group_add | yes | ||
| healthcheck | no | ||
| hostname | yes | Pod.Spec.HostName | |
| image | yes | Deployment.Spec.Containers.Image | |
| isolation | n/a | Not applicable as this applies to Windows with HyperV support | |
| labels | yes | Metadata.Annotations | |
| links | n/a | All containers in the same pod are accessible in Kubernetes | |
| logging | n/a | Kubernetes has built-in logging support at the node-level | |
| network_mode | n/a | Kubernetes uses its own cluster networking | |
| networks | on | See networks key | |
| networks: aliases | n/a | See networks key | |
| networks: addresses | n/a | See networks key | |
| pid | yes | Pod.Spec.HostPID | |
| ports | yes | Service.Spec.Ports | |
| ports: short-syntax | yes | Service.Spec.Ports | |
| ports: long-syntax | yes | Service.Spec.Ports | |
| secrets | yes | Secret | External Secret is not Supported |
| secrets: short-syntax | yes | Secret | External Secret is not Supported |
| secrets: long-syntax | yes | Secret | External Secret is not Supported |
| security_opt | n/a | Kubernetes uses its own container naming scheme | |
| stop_grace_period | yes | Pod.Spec.TerminationGracePeriodSeconds | |
| stop_signal | n/a | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/30051 | |
| sysctls | no | ||
| ulimits | n/a | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/3595 | |
| userns_mode | n/a | Not supported within Kubernetes and ignored in Docker Compose Version 3 | |
| volumes | yes | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
| volumes: short-syntax | yes | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
| volumes: long-syntax | yes | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster |
| restart | no |
| Keys | Supported |
|---|---|
| Volume | n/a |
| driver | n/a |
| driver_opts | n/a |
| external | n/a |
| labels | n/a |
| Network | n/a |
| driver | n/a |
| driver_opts | n/a |
| enable_ipv6 | n/a |
| ipam | n/a |
| internal | n/a |
| labels | n/a |
| external | n/a |
Updated 11 months ago
Did this page help you?
