簡體   English   中英

eval $(docker-machine env myvm1)不會切換到shell來與myvm1通信

[英]eval $(docker-machine env myvm1) does not switch to shell to talk to myvm1

伙計們,

我在這里關注Docker教程: https//docs.docker.com/get-started/part4/#configure-a-docker-machine-shell-to-the-swarm-manager並在運行時遇到阻力這個特殊的命令:

eval $(docker-machine env myvm1)

我實際上正在運行(如上所述,但添加了sudo)。

eval $(sudo docker-machine env myvm1)

我從命令行得到沒有輸出告訴我已經完成了什么以及我什么時候運行:

sudo docker-machine ls

我看到myvm1 沒有一個活躍狀態的預期。 我知道這一步沒有必要,但我想了解為什么命令不起作用並嘗試修復它。

我正在運行碼頭17.09.0-ce

在Ubuntu 16.04 LTS上

zsh shell(嘗試切換到bash)

順便說一句,這只是在我的本地機器上,而不是服務器。

任何幫助將非常感激。

如果你在sudo的遠端運行eval ,那就不會出錯了:

sudo sh -c 'eval "$(docker-machine env myvm1)"; docker-machine ls'

否則,通過eval docker-machine env的輸出而設置的環境變量不一定(禁止一些非常具體的/etc/sudoers配置)傳播到未來的docker-machine調用。


如果你想用shell函數自動化它,可以這樣做:

# docker-env sudo; usage: desudo vm-name command-to-run
desudo() {
  local cmd1 cmd2
  printf -v cmd1 'eval "$(docker-machine env %q)"' "$1"; shift
  printf -v cmd2 '%q ' "$@"
  sudo bash -c "${cmd1} && exec ${cmd2}"
}

...用作:

desudo vm1 docker-machine ls

你應該運行eval $(docker-machine env myvm1) 實際上,您不必添加sudo

但是你可能沒有權限在沒有sudo情況下運行docker ,這里是如何在Linux上解決這個問題。


按照本文中的步驟“Linux的安裝后步驟

  1. 創建docker組。 sudo groupadd docker
  2. 將您的用戶添加到docker組。 sudo usermod -aG docker $USER
  3. 注銷並重新登錄,以便重新評估您的組成員身份。
  4. 驗證您是否可以在沒有sudo情況下運行docker命令。 docker run hello-world

如果您看到以下錯誤:

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

修復它:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "/home/$USER/.docker" -R

我也遇到了與發布完全相同的問題,並且花了大部分時間用谷歌搜索答案。 我回過頭來看看文檔並意識到我完全省略了Linux的安裝后步驟。

https://docs.docker.com/install/linux/linux-postinstall/

我按照標記為Manage Docker的部分中的說明作為非root用戶eval $(sudo docker-machine env myvm1) ,后續的eval $(sudo docker-machine env myvm1) docker-machine ls按預期工作。 另外......它消除了使用sudo為所有docker命令添加前綴的需要。

我猜我應該有RTFM嗎?

我實際上正在運行(如上所述,但添加了sudo)。

eval $(sudo docker-machine env myvm1)

我從命令行得到沒有輸出告訴我已經完成了什么以及我什么時候運行:

sudo docker-machine ls我看到myvm1沒有按預期的活動狀態。

運行此命令它將工作

sudo sh -c'eval“$(docker-machine env myvm1)”; docker-machine ls'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM