Is your feature request related to a problem? Please describe.
Using curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" > docker-compose
fails on Raspbian as described in issue #6810.
The root causes are:
While issue #6810 was closed, I think this is a genuine feature request since instructions at https://docs.docker.com/compose/install/#install-as-a-container are not clear about which platforms are _officially_ supported to run docker-compose as a container.
Two recent events may now make this worth:
Combined with the fact that docker-compose is a core building block for orchestrating images, the lack of support on arm v7 (32 bits) and v8 (64 bits) makes the bootstrapping process options more limited than on x86 equivalent and the documentation is not clear about which options work where.
As stated at https://github.com/docker/compose/issues/4733#issuecomment-294021065, there _used_ to be a Dockerfile.armhf. This file was deleted in #6666 by @joakimr-axis since the current one works just fine.
Describe the solution you'd like
Officially create armv7 and arm64v8 docker images to https://hub.docker.com/r/docker/compose as part of the release process.
This is essentially a process change, not a code change, since the Dockerfile is known to work on arm already. This would involve at the very least updating .circleci/config.yml.
Describe alternatives you've considered
Installing via pip
works in the meantime but is trickier to run this process successfully for new comers with limited linux experience, especially that the documentation is misleading about what is supported and what is not. This leads to a poor user experience (UX).
As a new user to Docker, hoping to make my Raspberry Pi 4 the test ground for learning Docker, this stumbling block has been impossible to get past. Every tutorial uses docker-compose and the fact that it seems impossible to obtain easily has wasted hours of my time.
There is no clear reason why this isn't the case. It should at least be called out in the installation documentation in the meantime.
For those trying to understand why it is so hard: there is no official documentation for getting Docker (and compose!) up and running on an RPI. The general Linux guidance doesn't work. There are hundreds of tutorials out there, all of them of varying ages (the older ones being most wrong), all with varying levels of self-described 'easy' steps, most of them involving what can only be best described as hacks. I just wanted a little bit of a home project to learn a new technology. Instead I've wasted my time frustratingly. KISS principles do not appear to have been followed here.
@webash I'm sorry to hear you've had troubles installing compose. You should be able to do it pretty easily by installing python3
and python3-pip
first and then running python3 -m pip install -IU docker-compose
.
If you have further issues feel free to reach out via my contact info on my GitHub profile since this isn't really a support thread.
That being said I'm subscribed here hoping to see any kind of movement in this happening. I'd love to he able to run compose from docker on ARM. It works great on x86_64.
Python dependencies and the share number of them for docker-compose
is a crime to install directly on a machine where containers will be used; so I ended up following these instructions for getting a docker-compose
container spun up on the Raspberry Pi.
Interestingly those instructions use a Dockerfile from this very repo. I'm pretty sure all we're asking for is an armhf
tag on docker hub. Maybe a multiarch manifest if the devs are feeling fresh 馃槈
Yes, multiarch would surely be the contemporary way.
@webash
I had built it on my Raspberry Pi 3 Model B Rev 1.2 with Raspbian10 (buster) [arm/v7].
You can try to do it on your Raspberry Pi 4.
pi@raspberrypi:~ $ git clone https://github.com/docker/compose.git
pi@raspberrypi:~ $ cd compose/
pi@raspberrypi:~/compose $ git checkout -f 1.25.0
pi@raspberrypi:~/compose $ sudo docker build -t dockercompose:1.25.0 .
pi@raspberrypi:~ $ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.25.0/run.sh -o /usr/local/bin/docker-compose
pi@raspberrypi:~ $ sudo chmod +x /usr/local/bin/docker-compose
pi@raspberrypi:~ $ sudo sed -i 's/docker\/compose:$VERSION"/dockercompose:$VERSION"/g' /usr/local/bin/docker-compose
pi@raspberrypi:~ $ sudo docker-compose version
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
I have the following images after docker build
.
pi@raspberrypi:~ $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dockercompose 1.25.0 9272a0512c9e 16 seconds ago 56.6MB
<none> <none> d4b17be57ec2 About a minute ago 470MB
<none> <none> a164b2c19a32 31 minutes ago 306MB
python 3.7.4-slim-stretch c8a29540aa80 2 months ago 112MB
python 3.7.4-alpine3.10 6fcdf3f2e43b 2 months ago 76.6MB
debian stretch-20190812-slim 9e643d1c5544 4 months ago 41.5MB
docker 18.09.7 1661b80f3a8a 5 months ago 140MB
alpine 3.10.1 962e8b19ad7b 5 months ago 3.74MB
The executable docker-compose binary file is inside dockercompose:1.25.0
. alpine:3.10.1
is the base image of dockercompose:1.25.0
. The other images are useless anymore. You can delete them.
And don't try to copy it to Raspberry Pi and use it directly. Because it depends on other shared library inside dockercompose:1.25.0
.
It takes 40mins to build it on my Raspberry Pi 3. I had uploaded it to my docker-hub. If anyone want to use it on Raspberry Pi 3(arm/v7), please refer here.
https://hub.docker.com/r/linuxserver/docker-compose
Hopefully this helps anyone waiting for an official response.
sudo apt install docker-compose
works but it installs an older version (currently 1.25.0)
@Ivan61
sudo docker-compose version
Unable to find image 'dockercompose:1.25.0' locally
docker: Error response from daemon: pull access denied for dockercompose, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
@JonahGroendal @Ghada-Ch please also have a look at this comment (I could build Compose from sources for a Raspi4 on Ubuntu server ARM64)
There are official, up-to-date raspbian builds for docker core ...
https://download.docker.com/linux/raspbian/dists/buster/pool/stable/armhf
but not for compose? Why is that?
There are official, up-to-date raspbian builds for docker core ...
https://download.docker.com/linux/raspbian/dists/buster/pool/stable/armhf
but not for compose? Why is that?
Compose installs via pip, which works fine on arm. This issue it's specifically about the lack of an official docker image built for arm.
Last time I checked compose wants python 3, while raspbian's global python is still 2. apt-get install docker-compose
is still the cleanest compromise, but then we end up with an older version of it. Look, it's not the end of the world, I just can't help feeling the general docker experience on ARM/Raspbian still lags behind what I'm used to on mainstream cpus/distros.
What are the instructions for installing docker-compose on Yocto?
Last time I checked compose wants python 3, while raspbian's global python is still 2.
apt-get install docker-compose
is still the cleanest compromise, but then we end up with an older version of it. Look, it's not the end of the world, I just can't help feeling the general docker experience on ARM/Raspbian still lags behind what I'm used to on mainstream cpus/distros.
Echoing the Recommended method from https://hub.docker.com/r/linuxserver/docker-compose
sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Should work on any linux distro and should work on x86_64
, armv7l
/armhf
, and aarch64
/armv8
/arm64
if you already have docker installed.
Edit:
To be clear this runs compose inside a container and does not require installing python on the host system.
I've been using docker and docker-compose on gentoo-on-rpi-64bit on a pi4.
Although I'd recommend also using hard disks and not just an sd card in that scenario. (I'm using a X829 geekworm board as part of that)
Since gentoo tends to build stuff from source sometimes
Although gentoo-on-rpi-64bit is setup to use binary / precompiled ebuilds in most cases.
So far they have 1.27.0 of docker-compose available in the ebuilds although setting up the OS is more technical / not as pre-packaged as raspian. but it is ARM64
I've been building a multi-arch image for quite some time now - only running docker buildx
against the Dockerfile in this repository.
If anyone wants to give it a spin: gitlab.com/ix.ai/docker-compose or ixdotai/docker-compose
For Yocto Thud I managed to use docker-compose, but I needed to cheat it, so I guess some features might not work (reviewing the change log, it looks OK to me). Any one can print out what will not work?
My Environment:
BB_VERSION = "1.40.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal"
TARGET_SYS = "arm-fslc-linux-gnueabi"
MACHINE = "imx6ul-var-dart"
DISTRO = "fslc-framebuffer"
DISTRO_VERSION = "2.6"
TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard"
TARGET_FPU = "hard"
In conf/local.conf:
IMAGE_INSTALL_append += " python3-docker-compose"
In sources/meta-xxx/recipes-containers/docker-compose/python3-docker-compose_%.bbappend:
do_install_append() {
sed -e 's/docker<3.0,>=2.5.1/docker<3.5,>=2.5.1/g' ${D}${libdir}/python3.5/site-packages/docker_compose-1.16.1-py3.5.egg-info/requires.txt > mod_req.txt
install -d ${D}${libdir}/python3.5/site-packages/docker_compose-1.16.1-py3.5.egg-info
install -m 0644 mod_req.txt ${D}${libdir}/python3.5/site-packages/docker_compose-1.16.1-py3.5.egg-info/requires.txt
}
I've been using docker and docker-compose on gentoo-on-rpi-64bit on a pi4.
Although I'd recommend also using hard disks and not just an sd card in that scenario. (I'm using a X829 geekworm board as part of that)
Since gentoo tends to build stuff from source sometimesAlthough gentoo-on-rpi-64bit is setup to use binary / precompiled ebuilds in most cases.
So far they have 1.27.0 of docker-compose available in the ebuilds although setting up the OS is more technical / not as pre-packaged as raspian. but it is ARM64
Unfortunately, if you run the Sakaki's version of Gentoo, you'll find it hard to find support from Gentoo's normal support channels.
Most helpful comment
@webash
I had built it on my Raspberry Pi 3 Model B Rev 1.2 with Raspbian10 (buster) [arm/v7].
You can try to do it on your Raspberry Pi 4.
I have the following images after
docker build
.The executable docker-compose binary file is inside
dockercompose:1.25.0
.alpine:3.10.1
is the base image ofdockercompose:1.25.0
. The other images are useless anymore. You can delete them.And don't try to copy it to Raspberry Pi and use it directly. Because it depends on other shared library inside
dockercompose:1.25.0
.It takes 40mins to build it on my Raspberry Pi 3. I had uploaded it to my docker-hub. If anyone want to use it on Raspberry Pi 3(arm/v7), please refer here.