Контейнер Linux, выполняемый в macOS, создает отдельную среду, и да, он выглядит как поток из оболочки macOS, но это не так.История оболочки, свойства, функции - это отдельная история.Более того, если в контейнере нет постоянного подключенного тома, все эти параметры будут преобразованы и не выдержат перезапуска контейнера.
Подход к завершению bash для обоих из них - macOS и Ubuntu Linux схожи, нопотребуются различные шаги:
сторона macOS - постоянная поддержка для завершения kubectl bash:
используйте homebrew для установки поддержки:
brew install bash-completion
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
подход контейнера Ubuntu для получения kubectl иВстроенная поддержка завершения bash:
Вы можете адаптировать этот набор команд и использовать его в Dockerfile во время подготовки образа:
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubectl
echo 'source <(kubectl completion bash)' >> ~/.bashrc
Если впоследствии вы или пользователь выполняете / bin / bash при запускеконтейнер, то вы должны получить завершение работы.
docker exec -it docker_image_id /bin/bash
это запустит оболочку bash с завершением bash.