通过windows docker文件

时间:2017-04-18 08:59:30

标签: dockerfile docker-for-windows docker-desktop

我写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,我想在chocolatey git installer Dockerfile的{​​{1}}命令中重复这对我来说很好,但我仍然想知道有没有更简单的安装方法git on windowsnanoserver

6 个答案:

答案 0 :(得分:2)

通过使用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

答案 1 :(得分:1)

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

听起来你想根据具有git的nanoserver图像创建一个容器图像?

Chocolatey是一个好主意。

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

干杯:)

答案 2 :(得分:0)

您可以下载并使用Gi​​t Thumbdrive版本: https://git-scm.com/download/win

在以下位置查找链接:

适用于Windows Portable的Git(“ thumbdrive版”)

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

答案 3 :(得分: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 =“文件名”

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

答案 4 :(得分: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;

答案 5 :(得分:0)

使用 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