How to Build Docker Flower Images Locally

Flower는 ‘Docker Hub <https://hub.docker.com/u/flwr>’_에서 미리 만들어진 Docker 이미지들을 제공합니다. 해당 이미지들은 SuperLink, ServerNode 또는 ServerApp을 실행하는 데 필요한 모든 dependencies를 포함합니다. 필요한 경우 다른 버전의 Python이나 Linux 배포판(Ubuntu/Alpine)을 사용해 처음부터 사용자 정의 Docker 이미지를 빌드할 수도 있습니다. 이 가이드에서는 존재하는 이미지들과 이들을 로컬에서 빌드하는 방법에 대해 설명하겠습니다.

시작하기 전에, 로컬 개발 환경에서 몇 가지 전제 조건을 충족해야 합니다.

  1. Clone the flower repository.

    $ git clone --depth=1 https://github.com/adap/flower.git && cd flower
    
  2. Docker 데몬이 실행 중인지 확인하십시오.

    이미지들을 조합하는 빌드 명령어들은 해당 Dockerfile에 있습니다. “src/docker” 의 하위 디렉토리에서 찾을 수 있습니다.

    Flower Docker는 빌드 전달인자를 통해 구성됩니다. 빌드 argument들을 통해, 이미지를 보다 유연하게 생성할 수 있습니다. 예를 들어, base 이미지에서 “PYTHON_VERSION” 빌드 전달인자를 사용하여 Python 버전을 지정할 수 있습니다. 일부 빌드 전달인자들은 기본값이며, 이미지를 빌드할 때 지정해야 합니다. 각 이미지에 사용할 수 있는 모든 빌드 전달인자는 아래 표 중에 있습니다.

Building the Base Image

빌드 전달인자

설명

필수

예시

DISTRO

기본 이미지 사용을 위한 Linux 배포판.

아니오

ubuntu

DISTRO_VERSION

Linux 배포판 버전.

아니오

24.04

PYTHON_VERSION

설치 된 python 버전.

아니오

3.11 또는 3.11.1

PIP_VERSION

설치 된 pip 버전.

24.1.2

SETUPTOOLS_VERSION

설치 된 setuptools 버전.

70.3.0

FLWR_VERSION

설치 된 Flower 버전.

1.12.0

FLWR_PACKAGE

설치 할 Flower 패키지.

아니오

flwr 또는 flwr-nightly

FLWR_VERSION_REF

A direct reference without the @ specifier. If both FLWR_VERSION and FLWR_VERSION_REF are specified, the FLWR_VERSION_REF has precedence.

아니오

Direct Reference Examples

The following example creates a base Ubuntu/Alpine image with Python 3.11.0, pip 24.1.2, setuptools 70.3.0 and Flower 1.12.0:

$ cd src/docker/base/<ubuntu|alpine>
$ docker build \
  --build-arg PYTHON_VERSION=3.11.0 \
  --build-arg FLWR_VERSION=1.12.0 \
  --build-arg PIP_VERSION=24.1.2 \
  --build-arg SETUPTOOLS_VERSION=70.3.0 \
  -t flwr_base:0.1.0 .

In this example, we specify our image name as flwr_base and the tag as 0.1.0. Remember that the build arguments as well as the name and tag can be adapted to your needs. These values serve as examples only.

Building a Flower Binary Image

빌드 전달인자

설명

필수

예시

BASE_REPOSITORY

기본 이미지의 레포지토리 이름.

아니오

flwr/base

BASE_IMAGE

Flower 기본 이미지의 태그.

1.12.0-py3.11-ubuntu24.04

For example, to build a SuperLink image with the latest Flower version, Python 3.11 and Ubuntu 22.04, run the following:

$ cd src/docker/superlink
$ docker build \
  --build-arg BASE_IMAGE=1.12.0-py3.11-ubuntu22.04 \
  -t flwr_superlink:0.1.0 .

If you want to use your own base image instead of the official Flower base image, all you need to do is set the BASE_REPOSITORY build argument to flwr_base (as we’ve specified above).

$ cd src/docker/superlink/
$ docker build \
  --build-arg BASE_REPOSITORY=flwr_base \
  --build-arg BASE_IMAGE=0.1.0
  -t flwr_superlink:0.1.0 .

이미지 생성 후에, 이미지가 작동하는지 테스트할 수 있습니다:

$ docker run --rm flwr_superlink:0.1.0 --help

Direct Reference Examples

# main branch
git+https://github.com/adap/flower.git@main

# commit hash
git+https://github.com/adap/flower.git@1187c707f1894924bfa693d99611cf6f93431835

# tag
git+https://github.com/adap/flower.git@1.12.0

# artifact store
https://artifact.flower.ai/py/main/latest/flwr-1.12.0-py3-none-any.whl