{"id":24552,"date":"2025-07-23T23:16:48","date_gmt":"2025-07-23T20:16:48","guid":{"rendered":"https:\/\/computingforgeeks.com\/?p=24552"},"modified":"2025-07-23T23:16:54","modified_gmt":"2025-07-23T20:16:54","slug":"how-to-install-latest-docker-compose-on-linux","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/how-to-install-latest-docker-compose-on-linux\/","title":{"rendered":"Install Docker Compose on Linux Operating Systems"},"content":{"rendered":"\n<p>Docker Compose is an open source tool created for running multi container-based Docker applications. With Docker Compose, you easily a deployment with multiple container applications in a single file named <code>docker-compose.yml<\/code>. Then use the file definitions to spin up and manage your full application stack with single command <code>docker-compose<\/code>. Below is a simple docker-compose.yml file that can be used to create a web application with web server and database containers.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-pink-color\">vim docker-compose.yml<\/mark>\nservices:\n  web:\n    image: nginx:latest\n    ports:\n      - \"8080:80\"\n  db:\n    image: postgres:latest\n    environment:\n      POSTGRES_PASSWORD: <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">DBPassword<\/mark><\/code><\/pre>\n\n\n\n<p>This post aims to be a concise instructional step-by-step guide for developers and SysAdmins seeking to setup Docker Compose on Linux. We will check the Github API releases page for the project, and pull the latest binary file.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-install-docker-compose-on-linux\">How To Install Docker Compose on Linux<\/h2>\n\n\n\n<p>Follow the steps below to install and use Docker Compose on Linux from binary file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Install Docker Compose<\/h3>\n\n\n\n<p>You need curl and wget installed on your system for this operation. And definitely, access to the Terminal as a user with sudo privileges.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">### CentOS \/ RHEL <meta charset=\"utf-8\">###\n<\/mark><\/em>sudo yum -y install curl wget\n\n<meta charset=\"utf-8\"><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">### Debian \/ Ubuntu <meta charset=\"utf-8\">###\n<\/mark><\/em>sudo apt update\nsudo apt install -y curl wget\n\n<meta charset=\"utf-8\"><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">### Fedora <meta charset=\"utf-8\">###\n<\/mark><\/em>sudo dnf -y install curl wget<\/code><\/pre>\n\n\n\n<p>Once curl has been installed, download the latest Compose on your Linux machine.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s https:\/\/api.github.com\/repos\/docker\/compose\/releases\/latest | grep browser_download_url  | grep docker-compose-linux-x86_64 | cut -d '\"' -f 4 | wget -qi -<\/code><\/pre>\n\n\n\n<p>Make the binary file executable.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x docker-compose-linux-x86_64<\/code><\/pre>\n\n\n\n<p>Move the file to your PATH.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mv docker-compose-linux-x86_64 \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<p>Confirm version.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-pink-color\">docker-compose version<\/mark>\nDocker Compose version v2.28.1<\/code><\/pre>\n\n\n\n<p>Add user to docker group:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG docker $USER\nnewgrp docker<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-compose-command-line-completion\">2. Configure docker-compose shell&nbsp;completion<\/h3>\n\n\n\n<p>Compose has&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/en.wikipedia.org\/wiki\/Command-line_completion\" target=\"_blank\">command completion<\/a>&nbsp;for the bash and zsh shell.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"for-bash-users\">For Bash users<\/h4>\n\n\n\n<p>Place the completion script in&nbsp;<code>\/etc\/bash_completion.d<\/code>\/.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/bash_completion.d\/\nsudo curl -L https:\/\/raw.githubusercontent.com\/docker\/compose\/master\/contrib\/completion\/bash\/docker-compose -o \/etc\/bash_completion.d\/docker-compose<\/code><\/pre>\n\n\n\n<p>Source the file or re-login to enjoy completion feature.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"source \/etc\/bash_completion.d\/docker-compose\"|tee -a ~\/.bashrc\nsource \/etc\/bash_completion.d\/docker-compose<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"for-zsh-users\">For Zsh users<\/h4>\n\n\n\n<p>Download the completion script in your&nbsp;<code>~\/.zsh\/completion\/<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/.zsh\/completion\ncurl -L https:\/\/raw.githubusercontent.com\/docker\/compose\/master\/contrib\/completion\/zsh\/_docker-compose &gt; ~\/.zsh\/completion\/_docker-compose<\/code><\/pre>\n\n\n\n<p>Include the directory in your&nbsp;<code>$fpath<\/code>&nbsp;by adding in&nbsp;<code>~\/.zshrc<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-pink-color\">vim ~\/.zshrc||nano ~\/.zshrc<\/mark>\nfpath=(~\/.zsh\/completion $fpath)<\/code><\/pre>\n\n\n\n<p>Make sure&nbsp;<code>compinit<\/code>&nbsp;is loaded or do it by adding in&nbsp;<code>~\/.zshrc<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>autoload -Uz compinit &amp;&amp; compinit -i<\/code><\/pre>\n\n\n\n<p>Then reload your shell:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exec $SHELL -l<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_60\">3. Test Docker Compose installation<\/h3>\n\n\n\n<p>Our comprehensive guide is on <a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/computingforgeeks.com\/managing-docker-containers-with-docker-compose\/\" target=\"_blank\">Managing Docker Containers with Docker Compose<\/a><\/p>\n\n\n\n<p>Create a test Docker Compose file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim docker-compose.yml<\/code><\/pre>\n\n\n\n<p>Add below data to the file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  web:\n    image: nginx:latest\n    ports:\n     - \"8080:80\"\n    links:\n     - php\n  php:\n    image: php:8-fpm<\/code><\/pre>\n\n\n\n<p>Start service containers.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <span class=\"has-inline-color has-pale-pink-color\">docker-compose up -d<\/span>\n&#91;+] Running 18\/18\n \u2714 php Pulled                                                                                                                                                                                   20.9s\n   \u2714 01c187ab622c Pull complete                                                                                                                                                                  1.2s\n   \u2714 4382a8829fff Pull complete                                                                                                                                                                 15.3s\n   \u2714 43046b340e34 Pull complete                                                                                                                                                                 15.3s\n   \u2714 41722365abab Pull complete                                                                                                                                                                 15.5s\n   \u2714 a52941633aa9 Pull complete                                                                                                                                                                 15.5s\n   \u2714 930f8db3b95e Pull complete                                                                                                                                                                 18.9s\n   \u2714 f32aed4faf2d Pull complete                                                                                                                                                                 18.9s\n   \u2714 499f39c692f7 Pull complete                                                                                                                                                                 18.9s\n   \u2714 add8a6605e0d Pull complete                                                                                                                                                                 19.0s\n \u2714 web Pulled                                                                                                                                                                                    6.6s\n   \u2714 2cc3ae149d28 Already exists                                                                                                                                                                 0.0s\n   \u2714 1018f2b8dba8 Pull complete                                                                                                                                                                  4.6s\n   \u2714 b831e78d8e20 Pull complete                                                                                                                                                                  4.7s\n   \u2714 3ab22521e919 Pull complete                                                                                                                                                                  4.7s\n   \u2714 5112bf42775b Pull complete                                                                                                                                                                  4.7s\n   \u2714 cbdaf9e4ee2d Pull complete                                                                                                                                                                  4.7s\n   \u2714 a06b6fd631e8 Pull complete                                                                                                                                                                  4.7s\n&#91;+] Running 3\/3\n \u2714 Network root_default  Created                                                                                                                                                                 0.1s\n \u2714 Container root-php-1  Started                                                                                                                                                                 0.7s\n \u2714 Container root-web-1  Started                                                                                                                                                                 0.8s<\/code><\/pre>\n\n\n\n<p>Show running Containers<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <span class=\"has-inline-color has-pale-pink-color\">docker-compose ps<\/span>\n   Name                 Command               State                  Ports\n------------------------------------------------------------------------------------------\nroot_php_1   docker-php-entrypoint php-fpm    Up      9000\/tcp\nroot_web_1   \/docker-entrypoint.sh ngin ...   Up      0.0.0.0:8080-&gt;80\/tcp,:::8080-&gt;80\/tcp<\/code><\/pre>\n\n\n\n<p>Destroy containers<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <span class=\"has-inline-color has-pale-pink-color\">docker-compose stop<\/span>\nStopping root_web_1 ... done\nStopping root_php_1 ... done\n\n$ <span class=\"has-inline-color has-pale-pink-color\">docker-compose rm -f<\/span>\nGoing to remove root_web_1, root_php_1\nRemoving root_web_1 ... done\nRemoving root_php_1 ... done<\/code><\/pre>\n\n\n\n<p>Go through Official<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.docker.com\/\" target=\"_blank\">&nbsp;Docker documentation<\/a>&nbsp;and&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.docker.com\/compose\/\" target=\"_blank\">Docker Compose documentation<\/a>&nbsp;to learn more.<\/p>\n\n\n\n<p>More guides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/computingforgeeks.com\/check-pod-container-metrics-on-openshift-kubernetes\/\" target=\"_blank\">Ctop &#8211; Top command for container metrics<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/computingforgeeks.com\/install-docker-ui-manager-portainer\/\" target=\"_blank\">How to Install Portainer Docker UI manager<\/a><\/li>\n\n\n\n<li><a aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" href=\"https:\/\/computingforgeeks.com\/how-to-run-local-kubernetes-clusters-in-docker\/\" target=\"_blank\">How To run Local Kubernetes clusters in Docker<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/computingforgeeks.com\/deploy-lightweight-kubernetes-with-microk8s-and-snap\/\" target=\"_blank\">Deploy Lightweight Kubernetes with MicroK8s and Snap<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/computingforgeeks.com\/how-to-run-minikube-on-kvm\/\" target=\"_blank\">How to run Minikube on KVM<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Docker Compose is an open source tool created for running multi container-based Docker applications. With Docker Compose, you easily a deployment with multiple container applications in a single file named docker-compose.yml. Then use the file definitions to spin up and manage your full application stack with single command docker-compose. Below is a simple docker-compose.yml file &#8230; <a title=\"Install Docker Compose on Linux Operating Systems\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/how-to-install-latest-docker-compose-on-linux\/\" aria-label=\"Read more about Install Docker Compose on Linux Operating Systems\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":18408,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,316,299,50],"tags":[217,36396,759,36395],"cfg_series":[],"class_list":["post-24552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","category-containers","category-how-to","category-linux-tutorials","tag-docker","tag-docker-compose-on-linux","tag-docker-compose","tag-install-docker-compose-on-linux"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/24552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=24552"}],"version-history":[{"count":1,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/24552\/revisions"}],"predecessor-version":[{"id":160419,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/24552\/revisions\/160419"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/18408"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=24552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=24552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=24552"},{"taxonomy":"cfg_series","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/cfg_series?post=24552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}