Why is Docker installed but not Docker Compose?

DockerDocker ComposeDockerfile

Docker Problem Overview


I have installed docker on CentOS 7 by running following commands,

curl -sSL https://get.docker.com/ | sh
systemctl enable docker && systemctl start docker
docker run hello-world

NOTE: helloworld runs correctly and no issues.

however when I try to run docker-compose (docker-compose.yml exists and valid) it gives me the error on CentOS only (Windows version works fine for the docker-compose file)

/usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found

Docker Solutions


Solution 1 - Docker

You also need to install Docker Compose. See the manual. Here are the commands you need to execute

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)"  -o /usr/local/bin/docker-compose
sudo mv /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose

Solution 2 - Docker

I'm installing on a Raspberry Pi 3, with Raspbian 8. The curl method failed for me (got a line 1: Not: command not found error upon asking for docker-compose --version) and the solution of @sunapi386 seemed a little out-dated, so I tried this which worked:

First clean things up from previous efforts:

sudo rm /usr/local/bin/docker-compose
sudo pip uninstall docker-compose

Then follow this guidance re docker-compose on Rpi:

sudo apt-get -y install python-pip
sudo pip install docker-compose

For me (on 1 Nov 2017) this results in the following response to docker-compose --version:

docker-compose version 1.16.1, build 6d1ac219

Solution 3 - Docker

If you installed docker by adding their official repository to your repository list, like:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Just do:

$ sudo apt-get install docker-compose

In case on RHEL based distro / Fedora:

$ sudo dnf install docker-compose

Solution 4 - Docker

I'm on debian, I found something quite natural to do :

apt-get install docker-compose

and it did the job (not tested on centos)

Solution 5 - Docker

I'm installing on a Raspberry Pi 3, on Raspbian OS. The curl method didn't resolve to a valid response. It also said {error: Not Found}, I took a look at the URL https://github.com/docker/compose/releases/download/1.11.2/docker-compose-Linux-armv7l and it was not valid. I guess there was no build there.

This guide https://github.com/hypriot/arm-compose worked for me.

sudo apt-get update
sudo apt-get install -y apt-transport-https
echo "deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main" | sudo tee /etc/apt/sources.list.d/hypriot.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 37BBEE3F7AD95B3F
sudo apt-get update
sudo apt-get install docker-compose

Solution 6 - Docker

first of all please check if docker-compose is installed,

$ docker-compose -v

If it is not installed, please refer to the installation guide https://docs.docker.com/compose/install/ If installed give executable permission to the binary.

$ chmod +x /usr/local/bin/docker-compose

check if this works.

Solution 7 - Docker

Tried to install docker-compose on CentOS using curl per docker docs (for Linux). After those steps it returned an error

docker-compose -v
/usr/local/bin/docker-compose: line 1: Not: command not found

Funny thing docker-compose file literally contains just "Not Found" on line 1 (it should be a binary)

cat /usr/local/bin/docker-compose
Not Found

That means a github link I tried to curl from does not exist. My unsuccessful link was:

sudo curl -L "https://github.com/docker/compose/releases/download/2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Running uname -s and uname -m locally you can see what needs to be added to a download url

uname -s
Linux
uname -m
x86_64

Trying the url in a browser https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 shows that page was not found.

A problem they added "v" to a version, as in v2.2.2. So a download url should be with "v" https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64. Their releases: https://github.com/docker/compose/releases/

This worked (attention v2.2.2)

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
Docker Compose version v2.2.2

Solution 8 - Docker

Refered to the answers given above (I do not have enough reputation to refer separately to individual solutions, hence I do this collectively in this place), I want to supplement them with some important suggestions:

  1. docker-compose you can install from the repository (if you have this package in the repository, if not you can adding to system a repository with this package) or download binary with use curl - totourial on the official website of the project - src: https://docs.docker.com/compose/install /

  2. docker-compose from the repository is in version 1.8.0 (at least at me). This docker-compose version does not support configuration files in version 3. It only has version = <2 support. Inthe official site of the project is a recommendation to use container configuration in version 3 - src: https://docs.docker.com/compose/compose-file / compose-versioning /. From my own experience with work in the docker I recommend using container configurations in version 3 - there are more configuration options to use than in versions <3. If you want to use the configurations configurations in version 3 you have to do update / install docker-compose to the version of at least 1.17 - preferably the latest stable. The official site of the project is toturial how to do this process - src: https://docs.docker.com/compose/install/

  3. when you try to manually remove the old docker-compose binaries, you can have information about the missing file in the default path /usr/local/bin/docker-compose. At my case, docker-compose was in the default path /usr/bin/docker-compose. In this case, I suggest you use the find tool in your system to find binary file docker-compose - example syntax: sudo find / -name 'docker-compose'. It helped me. Thanks to this, I removed the old docker-compose version and added the stable to the system - I use the curl tool to download binary file docker-compose, putting it in the right path and giving it the right permissions - all this process has been described in the posts above.

Regards, Adam

Solution 9 - Docker

docker compose v1 is a separate install. To install v1 follow instructions here.

docker compose v2 is currently a separate intall but will be integrated into docker at some point, when it's ready. It has been conceived as a docker plugin. At this time, if you want docker compose v2, since this commit you can do :

sudo apt update && apt install docker-compose-plugin

with apt or the equivalent for yum. That will install the new docker compose V2 as a plugin.

Solution 10 - Docker

just use brew:

brew install docker-compose

Solution 11 - Docker

Installing docker doesn't mean that you've installed docker-compose. It has as prerequisitions that you've already installed the docker engine which you've already done. After that you're able to install docker-compose following this link for Centos 7.

Solution 12 - Docker

docker-compose is currently a tool that utilizes docker(-engine) but is not included in the distribution of docker.

Here is the link to the installation manual: https://docs.docker.com/compose/install/

TL;DR:

curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/bin/docker-compose

(1.8.0 will change in the future)

Solution 13 - Docker

I suggest using the official pkg on Mac. I guess docker-compose is no longer included with docker by default: https://docs.docker.com/toolbox/toolbox_install_mac/

Solution 14 - Docker

The above solutions didn't work for me. But I found this that worked:

sudo apt-get update -y && sudo apt-get install -y python3-pip python3-dev
sudo apt-get remove docker docker-engine docker.io
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo pip3 install docker-compose
#sudo docker-compose -f docker-compose-profess.yml pull ofw
sudo usermod -a -G docker $USER
sudo reboot

Solution 15 - Docker

On Linux, you can download the Docker Compose binary from the Compose repository release page on GitHub. Follow the instructions from the link, which involve running the curl command in your terminal to download the binaries. These step-by-step instructions are also included below.

1:Run this command to download the current stable release of Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

To install a different version of Compose, substitute 1.26.2 with the version of Compose you want to use.

2:Apply executable permissions to the binary:

sudo chmod +x /usr/local/bin/docker-compose

> Note: If the command docker-compose fails after installation, check > your path. You can also create a symbolic link to /usr/bin or any > other directory in your path.

Solution 16 - Docker

If you want to auto install docker-compose latest version, just run:

export docker_compose_latest=$(curl -Ls -o /dev/null -w %{url_effective}  https://github.com/docker/compose/releases/latest  | grep -o '[^/]*$')
curl -L "https://github.com/docker/compose/releases/download/${docker_compose_latest}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

It will install latest version of docker-compose. Official installing way need version obtained by your hands. But I wrote a script which obtain the latest version for you automatically.

Solution 17 - Docker

They changed the syntax. Now it is written like this:

docker compose [OPTIONS] COMMAND
docker compose ps

Now compose is plugin! But other doc pages have old syntax.
How I should support compatibility?!

Solution 18 - Docker

If docker-compose is already persists in /usr/local/bin:

ls -alt /usr/local/bin/ | grep docker-compose
> lrwxr-xr-x    1 root     wheel        77 Mar 11 10:39 docker-compose -> /Applications/Docker.app/Contents/Resources/bin/docker-compose/docker-compose

Then update your .bash_profile Path with this /usr/local/bin in the end:

export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH:/usr/local/bin"

Run:

source ~/.bash_profile

And check:

echo $PATH
> ...
which docker-compose
> /usr/local/bin/docker-compose
docker-compose

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionmahen3dView Question on Stackoverflow
Solution 1 - DockerDaniel StefaniukView Answer on Stackoverflow
Solution 2 - DockerScott VeirsView Answer on Stackoverflow
Solution 3 - DockerGayan WeerakuttiView Answer on Stackoverflow
Solution 4 - Dockerherve-guerinView Answer on Stackoverflow
Solution 5 - Dockersunapi386View Answer on Stackoverflow
Solution 6 - DockerASONView Answer on Stackoverflow
Solution 7 - DockerfrmbelzView Answer on Stackoverflow
Solution 8 - DockerAdam WądołkowskiView Answer on Stackoverflow
Solution 9 - DockerYair KukielkaView Answer on Stackoverflow
Solution 10 - DockerЛюбомир ПеретяткоView Answer on Stackoverflow
Solution 11 - DockerlvthilloView Answer on Stackoverflow
Solution 12 - DockerPatrick CornelissenView Answer on Stackoverflow
Solution 13 - DockerR ClavenView Answer on Stackoverflow
Solution 14 - DockerShaun BarneyView Answer on Stackoverflow
Solution 15 - DockerKashifView Answer on Stackoverflow
Solution 16 - DockerMohsen AbasiView Answer on Stackoverflow
Solution 17 - DockertannermanView Answer on Stackoverflow
Solution 18 - DockerJack PtsView Answer on Stackoverflow