

# Docker设置

> 译者：[flink.sojb.cn](https://flink.sojb.cn/)


[Docker](https://www.docker.com)是一个流行的容器运行时。Docker Hub上有用于Apache Flink的Docker镜像，可用于部署会话群集。Flink存储库还包含用于创建容器镜像以部署作业集群的工具。

## Flink会话群集

Flink会话群集可用于运行多个作业。部署后，每个作业都需要提交到集群。

### Docker镜像

该[Flink Docker镜像库](https://hub.docker.com/_/flink/)托管在 Docker镜像 Hub和提供Flink1.2.1版和更高的镜像。

可以使用Hadoop和Scala的每个受支持组合的镜像，并且为方便起见提供了标记别名。

从Flink 1.5开始，省略Hadoop版本的镜像标签（例如 `-hadoop28`）对应于不包含捆绑的Hadoop发行版的Flink的无Hadoop版本。

例如，下面的别名可以使用：_（`1.5.y`表示Flink1.5的最新版本）_

*   `flink:latest` → `flink:&lt;latest-flink&gt;-scala_&lt;latest-scala&gt;`
*   `flink:1.5` → `flink:1.5.y-scala_2.11`
*   `flink:1.5-hadoop27` → `flink:1.5.y-hadoop27-scala_2.11`

**注意：** Docker镜像是由个人以尽力而为的方式提供的社区项目。它们不是Apache Flink PMC的正式版本。

## Flink作业集群

Flink作业集群是运行单个作业的专用集群。这项工作是镜像的一部分，因此，不需要额外的工作提交。

### Docker镜像

Flink作业集群映像需要包含启动集群的作业的用户代码jar。因此，需要为每个作业构建专用的容器镜像。该`flink-container`模块包含一个`build.sh`脚本，可用于创建此类镜像。有关详细信息，请参阅[说明](https://github.com/apache/flink/blob/master/flink-container/docker/README.md)。

## Flink与Docker撰写

[Docker Compose](https://docs.docker.com/compose/)是一种在本地运行一组Docker容器的便捷方式。

GitHub上提供了[会话群集](https://github.com/docker-flink/examples/blob/master/docker-compose.yml)和[作业群集的](https://github.com/apache/flink/blob/master/flink-container/docker/docker-compose.yml)示例配置文件。

### 用法

*   在前台启动集群

    ```
     docker-compose up 
    ```

*   在后台启动集群

    ```
     docker-compose up -d 
    ```

*   将群集向上或向下扩展到_N_ TaskManagers

    ```
     docker-compose scale taskmanager=&lt;N&gt; 
    ```

*   杀死集群

    ```
     docker-compose kill 
    ```

群集运行时，您可以访问位于[http://localhost:8081](#)的Web UI 。您还可以使用Web UI将作业提交到会话群集。

要通过命令行将作业提交到会话群集，必须将JAR复制到JobManager容器并从那里提交作业。

例如：

```
$ JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
$ docker cp path/to/jar "$JOBMANAGER_CONTAINER":/job.jar
$ docker exec -t -i "$JOBMANAGER_CONTAINER" flink run /job.jar 
```

