After having upgraded to Mac OS Catalina the configuration of docker auto completion for both bash and zsh as suggested here will no longer work - probably due to the read-only system volume.
The Problem
For zsh e.g. the suggested
# directories adapted to Catalina's default zsh installation, not e.g. via homebrew which is /usr/local/share/zsh/site-functions/
etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/share/zsh/site-functions/_docker
ln -s $etc/docker-machine.zsh-completion /usr/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/share/zsh/site-functions/_docker-compose
will yield the following errors
ln: /usr/share/zsh/site-functions/_docker: Operation not permitted
ln: /usr/share/zsh/site-functions/_docker-machine: Operation not permitted
ln: /usr/share/zsh/site-functions/_docker-compose: Operation not permitted
not matter which user privileges.
One Fix
But, at least for zsh, there is another option which does not require writing/linking to the system volume. It rather uses the  mac os user directory and then tells zsh to look there for docker auto completion.
First it needs the following directories and symlinks,
# again: directories adapted to Catalina's default zsh installation, not e.g. via homebrew which is /usr/local/share/zsh/site-functions/
mkdir -p ~/.zsh/completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion ~/.zsh/completion/_docker
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion ~/.zsh/completion/_docker-machine
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion ~/.zsh/completion/_docker-compose
and then the following entries in your ~/.zshrc
autoload -Uz compinit
fpath=(~/.zsh/completion $fpath)
compinit -i
After that the docker auto completion for zsh is available in every new shell or after executing . ~/.zshrc again in the current shell.