Introduction
Docker is an open-source platform for developing, shipping, and running applications as portable, self-sufficient containers. Safe Software creates images for the FME Flow services (FME Flow core, engine, etc) so that you can quickly start FME Flow containers.
As FME Flow has multiple services, which means multiple containers, we leverage Docker Compose.
Docker Compose is a tool for defining and running multi-container Docker applications, like FME Flow. With one simple command, you can start and stop all of FME Flow’s services.
A Docker Compose (YAML) file defines all the services we have made available here (download the YAML file). The Docker Compose file defines the FME Flow services by specifying the names of the respective containers and their versions.
Why use Docker to deploy FME Flow?
FME Flow on Docker is a solution for someone who’s looking to quickly start up a containerized version of FME Flow. This is not a distributed deployment.
If you’re interested in a distributed, containerized deployment or a more agile, scalable, and modern solution, we recommend Kubernetes.
Terminology
When working with Docker, you should be familiar with some common terms. All definitions are taken from the Docker documentation.
| Docker Terminology | Definition | Docker Documentation Reference |
|---|---|---|
| Container | A container is a runtime instance of a docker image. | Container |
| Docker Compose | Docker Compose is a tool for defining and running complex applications with Docker. A multi-container application is defined in a single (YAML) file. | Overview of Docker Compose |
| Dockerfile |
A Dockerfile is a text document that contains all the commands you would normally execute manually in order to build a Docker image. Docker can build images automatically by reading the instructions from a Dockerfile. Safe Software does not make our Dockerfiles public. Some customers may build their own Dockerfiles based on our engine images. |
Dockerfile |
| Image | Docker images are the basis of containers. An Image is an ordered collection of root filesystem changes and the corresponding execution parameters for use within a container runtime. An image typically contains a union of layered filesystems stacked on top of each other. An image does not have a state, and it never changes. | Image |
| Registry | A Registry is a hosted service containing repositories or images that respond to the Registry API. The default registry can be accessed using a Docker Hub browser or using the docker search command. |
Registry Safe Software's images |
| Repository | A Repository is a set of Docker images. A repository can be shared by pushing it to a registry server. The different images in a repository can be labeled using tags. | Repository |
| Service | A service is the definition of how you want to run your application containers. The different FME Flow components are separated into named services. It is useful to know what the names of the services are for the different Docker Compose commands. |
Service |
| Tag | A tag is a label applied to a Docker image in a repository. Tags are how various images in a repository are distinguished from each other. Not every FME Flow build will be made public, but the ones that are will be tagged with their build number. |
Tag |
| Volume | A volume is a specially designated directory within one or more containers that bypasses the Union File System. Volumes are designed to persist data independent of the container's life cycle. The FME Flow System Share is a volume. |
Volume |
Useful Resources
Documentation
Articles
- Install FME Flow for Docker
- Deployment of FME Flow using Docker (Linux)
- Useful commands for FME Flow for Docker
- FME Flow on Docker: Utilizing Engine Assignment and Job Routing
Blogs
- FME Flow on Mac using ‘Docker for Mac’ (Part 2 of Docker at Safe) (2016)
- Docker and FME: Driver and Worker Workflows (2017)
- Elastic Processing in the Cloud with Docker and FME Flow (2018)