如何在 Docker 容器中挂载 HDFS

How to mount HDFS in a Docker container

我在 Docker 容器中 Docker 制作了一个应用程序。我打算让应用程序能够从我们的 HDFS 访问文件。 Docker 图像将部署在我们通过 Marathon-Mesos 安装 HDFS 的同一集群上。

下面是 json 即将 POST 的马拉松比赛。看来我的应用程序能够在 HDFS 中读取和写入文件。有人可以评论这个的安全性吗?我的应用程序更改的文件是否也会在 HDFS 中正确更改?我用 Google 搜索了一下,没有找到任何类似的方法...

{
  "id": "/ipython-test",
  "cmd": null,
  "cpus": 1,
  "mem": 1024,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "volumes": [
      {
        "containerPath": "/home",
        "hostPath": "/hadoop/hdfs-mount",
        "mode": "RW"
      }
    ],
    "docker": {
      "image": "my/image",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8888,
          "hostPort": 0,
          "servicePort": 10061,
          "protocol": "tcp",
        }
      ],
      "privileged": false,
      "parameters": [],
      "forcePullImage": true
    }
  },
  "portDefinitions": [
    {
      "port": 10061,
      "protocol": "tcp",
      "labels": {}
    }
  ]
}

你可以看看Docker volume docs

基本上,app.json 中的 volumes 定义将触发带有标志 -v /hadoop/hdfs-mount:/home:RW 的 Docker 图像的开始,这意味着主机路径被映射到Docker 容器在读写模式下为 /home

如果您通过 SSH 进入 运行 应用程序节点并执行 docker inspect <containerId>.

,您应该能够验证这一点

另见