在 DC/OS 上部署 docker 容器

问题描述

我正在尝试在 DC/OS 上部署一些 docker 容器。我成功地部署了一个简单的 docker 容器。但是我需要部署一个附加了一些附加参数的容器。就像附加一个像卷一样的目录并设置一些环境变量。在docker中,通过运行以下命令来实现。

sudo docker run --name nifi-ssl \
  -v /home/azureuser/docker_nifi/nifi_stores:/opt/certs \
  -p 8443:8443 \
  -e NIFI_WEB_PROXY_HOST="some dns":8443 \
  -e AUTH=tls \
  -e KEYSTORE_PATH=/opt/certs/keystore.jks \
  -e KEYSTORE_TYPE=JKS \
  -e KEYSTORE_PASSWORD="somevalue"  \
  -e TRUSTSTORE_PATH=/opt/certs/truststore.jks \
  -e TRUSTSTORE_PASSWORD="somevalue" \
  -e TRUSTSTORE_TYPE=JKS \
  -e INITIAL_ADMIN_IDENTITY='CN=sys_admin,OU=NIFI' \
  -d \
  apache/nifi:latest

我需要在我为部署容器而创建的马拉松定义中设置这些参数。一个简单容器的马拉松应用定义如下。

{
  "id": "nifi","container": {
    "type": "DOCKER","docker": {
      "image": "apache/nifi:latest"
    },"portMappings": [
      { "hostPort": 8080,"containerPort": 8080,"protocol": "tcp" }
    ]
  },"networks": [
    {
      "mode": "container/bridge"
    }
  ],"acceptedResourceRoles": ["slave_public"],"instances": 1,"cpus": 0.1,"mem": 5120
}

我的问题是如何将上述 docker 命令转换为 marathon 应用程序定义,以便在我部署它时,生成的容器就像我运行 docker 命令时得到的一样

解决方法

好吧,我自己解决了这个问题,这是解决方案,以防万一其他人想做类似的事情。下面是我用来部署容器的 DCOS Marathon 应用配置。

{
  "id": "nifi-ssl","container": {
    "type": "DOCKER","docker": {
      "image": "apache/nifi:latest","parameters": [
            { "key": "volume","value": "/home/centos/nifi_stores:/opt/certs" }
        ]

    },"portMappings": [
      { "hostPort": 8080,"containerPort": 8080,"protocol": "tcp" },{ "hostPort": 9006,"containerPort": 9006,"protocol": "tcp" }
    ]
  },"env": {
    "NIFI_WEB_HTTPS_PORT": "9006","NIFI_WEB_PROXY_HOST": "<DCOS cluster public agent dns name>:9006","AUTH": "tls","KEYSTORE_PATH": "/opt/certs/keystore.jks","KEYSTORE_TYPE": "JKS","KEYSTORE_PASSWORD": "passwordfromnifi.properties","TRUSTSTORE_PATH": "/opt/certs/truststore.jks","TRUSTSTORE_PASSWORD": "passwordfromnifi.properties","TRUSTSTORE_TYPE": "JKS","INITIAL_ADMIN_IDENTITY": "CN=sys_admin,OU=NIFI"
  },"networks": [
    {
      "mode": "container/bridge"
    }
  ],"acceptedResourceRoles": ["slave_public"],"instances": 1,"cpus": 1,"mem": 5120
}