4

我写Dockerfile的是基于windowsnanoserver的。我需要添加到这个图像 git。为了实现它,我做了以下事情:

RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/Git-2.12.2.2-64-bit.exe'
RUN Invoke-Expression "c:\Git-2.12.2.2-64-bit.exe"

但是当我通过 docker build 执行这​​些行时,我收到以下错误消息:

Invoke-Expression:术语“c:\Git-2.12.2.2-64-bit.exe”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我意识到此错误消息表明由于 Windows docker 映像的控制台性质,我将无法执行 GUI 安装程序。不幸的是 git 没有控制台安装程序。Chocolateywindowsservercore图像下工作正常,但在windowsnanoserver上不起作用。为了为windowsnanoserver安装 git,我想重复Dockerfile来自巧克力 git 安装程序的命令,这对我来说很好,但我仍然想知道有没有更简单的方法在windowsnanoserver上安装 git ?

4

6 回答 6

10

我通过使用 MinGit 并将有关 mingit 的信息放入环境/路径变量中解决了 GUI 问题。我使用了以下方法:

RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/MinGit-2.12.2.2-64-bit.zip' -OutFile MinGit.zip

RUN Expand-Archive c:\MinGit.zip -DestinationPath c:\MinGit; \
$env:PATH = $env:PATH + ';C:\MinGit\cmd\;C:\MinGit\cmd'; \
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\' -Name Path -Value $env:PATH
于 2017-04-28T13:39:22.987 回答
4

你是对的,Windows 和 Linux 容器通常都专注于运行无头应用程序(即没有 GUI)。

听起来您想基于具有 git 的 nanoserver 映像创建容器映像?

巧克力是个好主意。

如果你给我更广泛的目标背景,我可以进一步帮助你。

干杯:)

于 2017-04-20T19:58:05.110 回答
3

根据此图像,使用 Chocolatey 安装到 docker 图像对我有用:ehong

我将这些行添加到我的 Dockerfile 中:

ENV ChocolateyUseWindowsCompression false 
RUN powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
RUN powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
RUN choco install git.install -y --no-progress
于 2021-06-03T11:03:55.103 回答
0

您可以下载和使用 Git Thumbdrive 版本: https ://git-scm.com/download/win

查找以下链接:

Git for Windows Portable(“拇指驱动器版”)

例如:https ://github.com/git-for-windows/git/releases/download/v2.23.0.windows.1/PortableGit-2.23.0-64-bit.7z.exe

于 2019-10-18T17:51:45.687 回答
0

调用带有参数/?的git.setup.exe安装文件 列出所有可能的开关。

运行静默安装:git.setup.exe /VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS

要进行自定义安装:

使用参数 /SAVEINF="filename" 手动运行 git 安装

例如:。git-2.xx.exe /SAVEINF="文件名"

然后使用 /LOADINF="filename" 重复安装

例如:git.setup.exe /VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /LOADINF="filename"

它记录在: Git: Silent-or-Unattended-Installation

于 2019-10-25T19:21:52.793 回答
0

根据@Mariusz 的回答,以下几行将 git 安装到 Windows 映像中

    # copy inf file
COPY resources/git-install.inf c:\git-install.inf
# get Git install file
RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.30.1.windows.1/Git-2.30.1-64-bit.exe' -OutFile 'git.exe'; `
# install Git
    Start-Process "c:\git.exe" -ArgumentList '/SP-', '/VERYSILENT', '/NORESTART', '/NOCANCEL', '/CLOSEAPPLICATIONS', '/RESTARTAPPLICATIONS', '/LOADINF=git-install.inf' -Wait -NoNewWindow; `
# delete files
    Remove-Item -Force git-install.inf; `
    Remove-Item -Force git.exe;
于 2021-02-25T10:01:35.313 回答