How to add bash command completion for Docker on Mac OS X?

MacosDocker

Macos Problem Overview


I am running docker and I want bash command completion for docker commands and parameters.

Macos Solutions


Solution 1 - Macos

If you have already homebrew bash-completion installed just install the docker completion script into the bash_completion.d

curl -XGET https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker > $(brew --prefix)/etc/bash_completion.d/docker

Note: If you do not have homebrew bash-completion installed, follow these instructions to install it before you execute the line above.

Note: the completion depends on some functions defined in debian bash-completion. Therefore, just sourcing the docker completion script as described in completion/bash/docker may not work. If you try to complete docker run (by hitting TAB) you may get an error like __ltrim_colon_completions: command not found. This could mean that you have not installed the bash-completion scripts.

Solution 2 - Macos

The official Docker for Mac page has a section on installing bash completion:

https://docs.docker.com/docker-for-mac/#bash

If you have Homebrew bash completion installed:

cd /usr/local/etc/bash_completion.d
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion

Solution 3 - Macos

The completion scripts come with Docker Beta. I want them to stay up to date. So, on OS X...

  • Install homebrew's bash-completion

  • Symlink the files

      find /Applications/Docker.app \
      -type f -name "*.bash-completion" \
      -exec ln -s "{}" "$(brew --prefix)/etc/bash_completion.d/" \;
    

Solution 4 - Macos

The stumbling point for me was that once you brew install bash-competion, you have to add few lines in your .bash_profile to load it once you launch Terminal:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

Source: http://davidalger.com/development/bash-completion-on-os-x-with-brew/

Because I haven't found anywhere a step by step documentation, I've made a quick script to install homebrew, bash-completion and eventually the completion scripts for docker. https://github.com/HypnoTheNomad/docker-bash-completion-macos-brew

Solution 5 - Macos

The auto completion of docker needed not only for mac, its also needed for ubuntu / bash terminals.

In Ubuntu

curl -ksSL https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker |sudo tee /etc/bash_completion.d/docker

Completion will be available upon next login.

Since its top result in google I added answer here.

Solution 6 - Macos

Guide to setup autocomplete for ZSH on Mac OSX

Follow these steps if you are using oh-my-zsh and autocomplete is not working:

Step 1:

Make the following three links:

ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker

ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

Step 2:

Either add autoload -Uz compinit; compinit to .zshrc

or run echo "autoload -Uz compinit; compinit" >> .zshrc in your shell

Solution 7 - Macos

The official Docker site has a section for Command-line completion, and for Mac to:

https://docs.docker.com/compose/completion/#mac

Helped for me with Homebrew:

brew install bash-completion

After the installation, Brew displays the installation path. From documentation is correct for me:

/usr/local/etc/bash_completion.d/

Run the script:

sudo curl -L https://raw.githubusercontent.com/docker/compose/1.25.4/contrib/completion/bash/docker-compose -o /usr/local/etc/bash_completion.d/docker-compose

Open and add following in the end of your file ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
 . $(brew --prefix)/etc/bash_completion
 fi

Restart terminal. It's all.

Solution 8 - Macos

Just to be said: if you use brew: brew install docker will do all what you need. It includes brew link docker which installs the completion into `brew --prefix`/etc/bash_completion.d/docker same topic, same answer for docker-machine, docker-compose, etc. ...

else (perhaps you are using Docker Beta (new "more native" docker installation package without Virtualbox) you still have to add it manually, then follow Michael's answer plus have a look at the additional completion scripts for docker-machine, docker-compose and some shell-helper that are handled in the 'script' from CodeCorrupt

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
QuestionMichael_ScharfView Question on Stackoverflow
Solution 1 - MacosMichael_ScharfView Answer on Stackoverflow
Solution 2 - MacosRoy ClarksonView Answer on Stackoverflow
Solution 3 - MacosHarveyView Answer on Stackoverflow
Solution 4 - MacosHypnoView Answer on Stackoverflow
Solution 5 - Macosarulraj.netView Answer on Stackoverflow
Solution 6 - MacosAnujView Answer on Stackoverflow
Solution 7 - MacosAlexander YushkoView Answer on Stackoverflow
Solution 8 - Macoschildno͡.deView Answer on Stackoverflow