在ConEmu/Cmder中使用git-bash加载Docker脚本

3

我看到在Windows上Docker的快捷方式是:

C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh"  

我在Cmder/ConEmu中使用git-bash。
我希望在启动该控制台时执行此脚本,以便将所有终端选项卡包含在一个程序中,而不是在这里使用git-bash,那里使用docker。
我发现很难找到正确的方法来运行这个.sh文件。我发现引号与从Windows快捷方式运行新终端窗口时不同。
我尝试过:
"C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh""

返回:

VirtualBox或Docker Machine未安装。请重新运行Toolbox Installer并重试。
看起来出了点问题。按任意键继续...

C:\Windows\System32\cmd.exe /c ""C:\Program Files\Git\bin\bash.exe" --login -i -- C:\Program Files\Docker Toolbox\start.sh"

返回:

bash: C:\Program: 没有这个文件或目录

当前目录:

C:\Code\cmder_mini

需要执行的命令:

"C:\Windows\System32\cmd.exe" /c ""C:\Program Files\Git\bin\bash.exe" --login -i -- C:\Program Files\Docker Toolbox\start.sh"

ConEmuC:根进程存活时间不到10秒,ExitCode=127。
按Enter或Esc关闭控制台...

1
你尝试了什么,具体在哪里?你注意到你指定了不平衡的双引号吗? - Maximus
当我把光标放到第一个终端中复制错误消息时,它向上滚动,我看到了“找不到docker”的错误,所以我在任务参数中添加了以下开关/dir "C:\Program Files\Docker Toolbox"。 - matthewbaskey
3个回答

4
我发现了一个对我来说非常简单的解决方案:将Cmder / ConEmu设置为控制台应用程序的默认终端。之后,Docker Quickstart终端会直接打开Cmder / ConEmu,而不是使用本机的Windows CMD。 :)
您可以在设置对话框中找到此设置(Win + Alt + P或右键单击窗口标题栏)。然后转到:
集成 -> 默认术语
选中“强制ConEmu作为控制台应用程序的默认终端”复选框,然后按“保存设置”。

1

一个 git bash.exe 应该继承您的 %PATH% 作为 $PATH

但是 docker toolbox Windows start.sh 还依赖于其他环境变量,这些环境变量应该在调用之前设置:

  • DOCKER_MACHINE: path/to/docker-machine.exe (包括 exe 文件本身)
  • VBOX_INSTALL_PATH: VirtualBox 的路径。

确保在调用 ConEmu 并调用第一个命令之前先定义它们。


我已经让它工作了,但我不确定这是否是最佳方法,所以我把这个问题留着开放。 - matthewbaskey
基本上,我使用“设置新任务”底部文本区域中的第一个命令标签“命令”,并输入以下内容:“C:\Program Files\Git\bin\bash.exe” --login -i “C:\Program Files\Docker Toolbox\start.sh”。然后,在第二个标签“任务参数”中,我放置了“/dir“C:\Program Files\Docker Toolbox””。 Docker启动但将我留在%UserProfile%,这就是.docker所在的位置。 start.sh寻找${VBOX_MSI_INSTALL_PATH}VBoxManage.exe。通常我使用conemu任务参数将我放在c:\code中。 - matthewbaskey
1
@magister 我只是使用docker-machine ssh:这将使我进入默认VM中的正确shell会话。 - VonC
Magister@NABU MINGW64 /c/Code $ docker-machine ssh default <!--太好了,谢谢,我感觉更加融入了... ;) - matthewbaskey
@magister 做得好!我经常觉得 docker-machine 就是我所需要的。 - VonC
显示剩余2条评论

1
我发现了一个好的解决方案,可以在任何我打开的cmder终端中正常使用docker。
只需将此代码粘贴到cmderRoot/config/user-profile.cmd中。
FOR /F "tokens=* USEBACKQ" %%F IN (`docker-machine status`) DO (
  SET machine_status=%%F
)


IF NOT %machine_status% == Running (
   cmd /c "docker-machine start default"
) 

FOR /F "tokens=*" %%i in ('docker-machine env') do @%%i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接