各种docker集群格式的转换器
container-transform的Python项目详细描述
容器转换
容器转换是一个小实用程序,用于转换各种Docker容器 相互格式化。
当前,容器转换可以解析和转换:
- Kubernetes吊舱规格
- ECS任务定义
- Docker编写配置文件
- 马拉松式应用程序定义或应用程序组
- Chronos任务定义
它可以输出到:
- 系统单位文件
示例
为kubernetes作曲
$ cat docker-compose.yaml version: '2' services: etcd: cpu_shares: 102.4 entrypoint: /usr/local/bin/etcd -data-dir /var/etcd/data -listen-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001 -advertise-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001 -initial-cluster-token skydns-etcd image: gcr.io/google_containers/etcd-amd64:2.2.1 mem_limit: 524288000b healthz: command: -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null -port=8080 cpu_shares: 10.24 image: gcr.io/google_containers/exechealthz:1.0 mem_limit: 20971520b ports: - '8080' kube2sky: command: --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml --domain=cluster.local cpu_shares: 102.4 image: gcr.io/google_containers/kube2sky:1.14 mem_limit: 209715200b volumes: - /usr/share/ca-certificates:/etc/ssl/certs - /etc/kubernetes/worker-kubeconfig.yaml:/etc/kubernetes/worker-kubeconfig.yaml:ro - /etc/kubernetes/ssl:/etc/kubernetes/ssl:ro skydns: command: -machines=http://127.0.0.1:4001 -addr=0.0.0.0:53 -ns-rotate=false -domain=cluster.local. cpu_shares: 102.4 image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c mem_limit: 209715200b ports: - 53/udp - '53' $ container-transform -i compose -o kubernetes docker-compose.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: null version: latest name: null namespace: default spec: replicas: 1 selector: matchLabels: app: null version: latest template: metadata: labels: app: null version: latest spec: containers: - command: - /usr/local/bin/etcd - -data-dir - /var/etcd/data - -listen-client-urls - http://127.0.0.1:2379,http://127.0.0.1:4001 - -advertise-client-urls - http://127.0.0.1:2379,http://127.0.0.1:4001 - -initial-cluster-token - skydns-etcd image: gcr.io/google_containers/etcd-amd64:2.2.1 name: etcd resources: limits: cpu: 100.0m memory: 500Mi - args: - -cmd=nslookup - kubernetes.default.svc.cluster.local - 127.0.0.1 - '>/dev/null' - -port=8080 image: gcr.io/google_containers/exechealthz:1.0 name: healthz ports: - containerPort: 8080 protocol: TCP resources: limits: cpu: 10.0m memory: 20Mi - args: - --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml - --domain=cluster.local image: gcr.io/google_containers/kube2sky:1.14 name: kube2sky resources: limits: cpu: 100.0m memory: 200Mi volumeMounts: - mountPath: /etc/ssl/certs name: usr-share-ca-certificates - mountPath: /etc/kubernetes/worker-kubeconfig.yaml name: etc-kubernetes-worker-kubeconfig.yaml readOnly: true - mountPath: /etc/kubernetes/ssl name: etc-kubernetes-ssl readOnly: true - args: - -machines=http://127.0.0.1:4001 - -addr=0.0.0.0:53 - -ns-rotate=false - -domain=cluster.local. image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c name: skydns ports: - containerPort: 53 protocol: UDP - containerPort: 53 protocol: TCP resources: limits: cpu: 100.0m memory: 200Mi volumes: - hostPath: path: /etc/kubernetes/ssl name: etc-kubernetes-ssl - hostPath: path: /etc/kubernetes/worker-kubeconfig.yaml name: etc-kubernetes-worker-kubeconfig.yaml - hostPath: path: /usr/share/ca-certificates name: usr-share-ca-certificates
合成到ECS
$ cat docker-compose.yml | container-transform -v
{
"family": "python-app",
"volumes": [
{
"name": "host_logs",
"host": {
"sourcePath": "/var/log/myapp"
}
}
],
"containerDefinitions": [
{
"memory": 1024,
"image": "postgres:9.3",
"name": "db",
"essential": true
},
{
"memory": 128,
"image": "redis:latest",
"name": "redis",
"essential": true
},
{
"name": "web",
"memory": 64,
"command": [
"uwsgi",
"--json",
"uwsgi.json"
],
"mountPoints": [
{
"sourceVolume": "host_logs",
"containerPath": "/var/log/uwsgi/"
}
],
"environment": [
{
"name": "AWS_ACCESS_KEY_ID",
"value": "AAAAAAAAAAAAAAAAAAAA"
},
{
"name": "AWS_SECRET_ACCESS_KEY",
"value": "1111111111111111111111111111111111111111"
}
],
"essential": true
}
]
}
Container web is missing required parameter "image".
Container web is missing required parameter "cpu".
快速帮助
Usage: container-transform [OPTIONS] [INPUT_FILE] container-transform is a small utility to transform various docker container formats to one another. Default input type is compose, default output type is ECS Default is to read from STDIN if no INPUT_FILE is provided All options may be set by environment variables with the prefix "CT_" followed by the full argument name. Options: -i, --input-type [ecs|compose|marathon|chronos|kubernetes] -o, --output-type [ecs|compose|systemd|marathon|chronos|kubernetes] -v, --verbose / --no-verbose Expand/minify json output -q, --quiet Silence error messages --version Show the version and exit. -h, --help Show this message and exit.
Docker图像
要获取Docker图像,请运行:
docker pull micahhausler/container-transform:latest
运行Docker图像:
docker run --rm -v $(pwd):/data/ micahhausler/container-transform docker-compose.yml # or cat docker-compose.yml | docker run --rm -i micahhausler/container-transform
安装
要安装最新版本(仅限python 3),请键入:
pip install container-transform
要直接从源代码安装最新代码,请键入:
pip install git+git://github.com/micahhausler/container-transform.git
许可证
麻省理工学院许可证(见许可证)