mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-10 00:09:04 +01:00
84 lines
3 KiB
Markdown
84 lines
3 KiB
Markdown
|
---
|
||
|
title: "Docker Images"
|
||
|
slug: "docker-images"
|
||
|
hidden: false
|
||
|
createdAt: "2023-12-07T10:00:00.000Z"
|
||
|
updatedAt: "2023-12-07T10:00:00.000Z"
|
||
|
---
|
||
|
# Setting up Docker's Buildx
|
||
|
|
||
|
Docker Buildx is an extension of Docker's build command, that provides a more efficient way to create images. It is part of Docker 19.03 and can also be manually installed as a CLI plugin for older versions.
|
||
|
|
||
|
1. Enable Docker CLI experimental features
|
||
|
Docker CLI experimental features are required to use Buildx. Enable them by setting the DOCKER_CLI_EXPERIMENTAL environment variable to enabled.
|
||
|
You can do this by adding the following line to your shell profile file (.bashrc, .zshrc, etc.):
|
||
|
|
||
|
```
|
||
|
export DOCKER_CLI_EXPERIMENTAL=enabled
|
||
|
```
|
||
|
|
||
|
After adding it, source your shell profile file or restart your shell to apply the changes.
|
||
|
|
||
|
2. Create a new builder instance
|
||
|
By default, Docker uses the "legacy" builder. You need to create a new builder instance that uses BuildKit. To create a new builder instance, use the following command:
|
||
|
|
||
|
```
|
||
|
docker buildx create --use
|
||
|
```
|
||
|
|
||
|
The --use flag sets the newly created builder as the current one.
|
||
|
|
||
|
# Setting up multiarch/qemu-user-static
|
||
|
|
||
|
1. Check Buildx is working
|
||
|
Use the `docker buildx inspect --bootstrap` command to verify that Buildx is working correctly. The `--bootstrap` option ensures the builder instance is running before inspecting it. The output should look something like this:
|
||
|
|
||
|
```
|
||
|
Name: my_builder
|
||
|
Driver: docker-container
|
||
|
Last Activity: 2023-06-13 04:37:30 +0000 UTC
|
||
|
Nodes:
|
||
|
Name: my_builder0
|
||
|
Endpoint: unix:///var/run/docker.sock
|
||
|
Status: running
|
||
|
Buildkit: v0.11.6
|
||
|
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386
|
||
|
```
|
||
|
|
||
|
2. Install `binfmt-support` and `qemu-user-static` if not installed already.
|
||
|
|
||
|
```shell
|
||
|
sudo apt-get update
|
||
|
sudo apt-get install docker.io binfmt-support qemu-user-static
|
||
|
sudo systemctl restart docker
|
||
|
```
|
||
|
|
||
|
3. Setup QEMU to run binaries from multiple architectures
|
||
|
|
||
|
```
|
||
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||
|
```
|
||
|
|
||
|
4. Confirm QEMU is working
|
||
|
|
||
|
Again run `docker buildx inspect --bootstrap` command to verify that `linux/arm64` is in the list of platforms.
|
||
|
|
||
|
```
|
||
|
Name: my_builder
|
||
|
Driver: docker-container
|
||
|
Last Activity: 2023-06-13 04:37:30 +0000 UTC
|
||
|
Nodes:
|
||
|
Name: my_builder0
|
||
|
Endpoint: unix:///var/run/docker.sock
|
||
|
Status: running
|
||
|
Buildkit: v0.11.6
|
||
|
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64
|
||
|
```
|
||
|
|
||
|
# Building/publishing images on Dockerhub
|
||
|
1. Ensure that your multiarch setup is working
|
||
|
|
||
|
2. Run script `tools/build-release.sh --push docker` to build `amd64`, `arm64v8`, `latest` and `multiarch` images and publish them on Dockerhub.
|
||
|
|
||
|
3. If you do not want to push the images directly on Dockerhub then run `tools/build-release.sh docker`. It will only create images locally but not push them to Dockerhub.
|