访问在DC / OS Marathon Pod中启动的容器

时间:2018-02-17 11:39:13

标签: docker marathon pod dcos

使用DC / OS文档中的示例,如果我使用以下定义启动pod,我可以看到pod已成功部署。

{
   "id":"/pod-with-endpoint",
   "containers":[
      {
         "name":"simple-docker",
         "resources":{
            "cpus":1,
            "mem":128,
            "disk":0,
            "gpus":0
         },
         "image":{
            "kind":"DOCKER",
            "id":"nginx"
         },
         "endpoints":[
            {
               "name":"web",
               "containerPort":80,
               "protocol":[
                  "http"
               ]
            }
         ]
      }
   ],
   "networks":[
      {
         "mode":"container"
      }
   ]
}

运行 dcos marathon pod list 会显示以下内容:

ID+TASKS            INSTANCES  VERSION                   STATUS  STATUS SINCE             WAITING
/pod-with-endpoint      1      2018-02-17T11:10:50.047Z  STABLE  2018-02-17T11:10:51.43Z  False
 |-simple-docker

如何访问nginx容器?

例如,如果我正在运行一个马拉松应用程序,我可以ssh进入运行任务的代理节点,然后通过运行 docker exec -it container_id bash 来访问容器。

运行 docker ps 时,我无法在代理节点上看到任何容器,大概是因为pod使用Universal Container Runtime(UCR),所以我无法看到可以连接到pod中启动的容器。

1 个答案:

答案 0 :(得分:0)

您可以使用dcos task cli来实现此目的:

 # Get the dcos task ID 
 dcos task [task_name]

 # Run task exec with task id and command to run
 dcos task exec [--interactive --tty] <task_id> <cmd> [<args>...]

 # Example
 dcos task exec --interactive --tty hello-world.df11367a-664354-11e8-8e5a-d6f1851c7c1c bash