

# Docker安装

[Docker](https://www.docker.com) 是一个流行的运行时容器。 Docker Hub上有用于Apache Flink的Docker镜像，可用于部署Flink群集。Flink源还有用于部署作业集群的镜像。

## Flink集群

Flink群集可用于运行多个作业。部署后，多个作业可逐个提交到集群。

### Docker 镜像

 [Flink Docker repository](https://hub.docker.com/_/flink/) 是Flink托管在 Docker Hub上的地址，提供了Flink1.2.1版本以上的镜像。

镜像支持Hadoop和scala的环境组合，为了方便通tag别名来区分。

从Flink 1.5版本以后, 镜像tags省略了Hadoop版本 (例如 `-hadoop28`) 对应于不包含Hadoop发行版的Flink的无Hadoop版本。

举例，下面的别名可以使用: _(`1.5.y` 表示Flink 1.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` 脚本，用于创建此类镜像，详情可参阅 [instructions](https://github.com/apache/flink/blob/release-1.7/flink-container/docker/README.md) 。

## Flink 和 Docker Compose

[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/release-1.7/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 
    ```

Flink集群运行时，可以通过 [http://localhost:8081](http://localhost:8081)来访问WEB UI，并通过UI来提交作业。

通过命令行将作业提交到Flink群集，必须将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 
```

