Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Windows Docker容器通过Dockerfile配置DNS服务器失败_Powershell_Docker_Dns_Docker For Windows - Fatal编程技术网

Powershell Windows Docker容器通过Dockerfile配置DNS服务器失败

Powershell Windows Docker容器通过Dockerfile配置DNS服务器失败,powershell,docker,dns,docker-for-windows,Powershell,Docker,Dns,Docker For Windows,我正在尝试设置一个Windows服务器容器,该容器应该像DNS服务器一样工作(稍后您可以看到Docker将其称为“目标”)。以下是我用于配置的Dockerfile: FROM mcr.microsoft.com/windows/servercore:ltsc2019 SHELL ["powershell", "-Command"] RUN Set-ExecutionPolicy Unrestricted # DNS Role RUN Install-

我正在尝试设置一个Windows服务器容器,该容器应该像DNS服务器一样工作(稍后您可以看到Docker将其称为“目标”)。以下是我用于配置的Dockerfile:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

SHELL ["powershell", "-Command"]

RUN Set-ExecutionPolicy Unrestricted

# DNS Role
RUN Install-WindowsFeature DNS -IncludeManagementTools

RUN Add-DnsServerPrimaryZone -Name "lab" -ZoneFile "lab.dns" -DynamicUpdate NonSecureAndSecure
RUN Add-DnsServerZoneDelegation -Name "lab" -ChildZoneName "abc" -NameServer "abc.lab" -IPAddress 172.16.238.11 -PassThru
RUN Add-DnsServerResourceRecordA -Name "abc" -ZoneName "lab" -AllowUpdateAny -IPv4Address "172.16.238.11" -TimeToLive 01:00:00 -CreatePtr
   
CMD ["powershell", "Start-Sleep", "-s", "1000"]
当我尝试使用docker compose构建容器(这不是compose文件中的唯一容器)时,构建失败并引发以下错误:

Step 6/8 : RUN Add-DnsServerZoneDelegation -Name "lab" -ChildZoneName "abc" -NameServer "abc.lab" -IPAddress 172.16.238.11 -PassThru
 ---> Running in d569392c87c9
Add-DnsServerZoneDelegation : Failed to create resource record abc.lab. in
zone lab on server D569392C87C9.
At line:1 char:1
+ Add-DnsServerZoneDelegation -Name lab -ChildZoneName abc -NameServer  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (abc.lab.:root/Microsoft/...rZoneD
   elegation) [Add-DnsServerZoneDelegation], CimException
    + FullyQualifiedErrorId : WIN32 9703,Add-DnsServerZoneDelegation

ERROR: Service 'target' failed to build : The command 'powershell -Command Add-DnsServerZoneDelegation -Name "lab" -ChildZoneName "abc" -NameServer "abc.lab" -IPAddress 172.16.238.11 -PassThru' returned a non-zero code: 1
值得注意的是,当我在带有powershell的容器中运行这三个命令(步骤5到7)时,一切正常

由于通过Dockerfile进行配置不起作用,但通过powershell运行命令起作用,因此我决定尝试另一种方法,并将Dockerfile更改为:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

SHELL ["powershell", "-Command"]

RUN Set-ExecutionPolicy Unrestricted

# DNS Role
RUN Install-WindowsFeature DNS -IncludeManagementTools

COPY resources/ C:/resources/
WORKDIR C:/resources/
RUN .\dns-config.ps1

CMD ["powershell", "Start-Sleep", "-s", "1000"]
其中\resources\dns-config.ps1为:

Add-DnsServerPrimaryZone -Name "lab" -ZoneFile "lab.dns" -DynamicUpdate NonSecureAndSecure

Add-DnsServerZoneDelegation -Name "lab" -ChildZoneName "abc" -NameServer "abc.lab" -IPAddress 172.16.238.11 -PassThru

Add-DnsServerResourceRecordA -Name "attacker" -ZoneName "lab" -AllowUpdateAny -IPv4Address "172.16.238.11"
(同样的事情,但通过脚本)

这样,生成成功,但区域委派似乎未配置,因为当我发出
Get DnsServerZoneDelegation
时,它会抛出一个错误:

PS C:\resources> Get-DnsServerZoneDelegation -Name lab
Get-DnsServerZoneDelegation : Failed to get  record in lab zone on C306A607A4B0 server.
At line:1 char:1 
+ Get-DnsServerZoneDelegation -Name lab
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (PS_DnsServerZoneDelegation:root/Microsoft/...rZoneDelegation) [Get-DnsS     erverZoneDelegation], CimException
+ FullyQualifiedErrorId : WIN32 9714,Get-DnsServerZoneDelegation
同样,如果我只是注释掉
RUN.\dns config.ps1
行,并在构建成功后在容器的powershell中运行脚本,那么一切似乎都正常工作:

PS C:\resources> .\dns-config.ps1

ZoneName ChildZoneName NameServer IPAddress
-------- ------------- ---------- ---------
lab      abc.lab.      abc.lab.   172.16.238.11


PS C:\resources> Get-DnsServerZoneDelegation -Name lab

ZoneName ChildZoneName NameServer IPAddress
-------- ------------- ---------- ---------
lab      abc.lab.      abc.lab.   172.16.238.11
那么,我做错了什么?提前感谢,我觉得应该有一个简单的解释,但在这一点上,我完全失去了诚实

可能有用的额外信息:

我正在用
docker compose-build-d
与另一个容器(不抛出错误)一起构建这个容器

Docker引擎版本为v19.03.13-beta2

在Windows 10主机上运行所有这些-Windows 10版本1903(OS Build 18362.1082)

相关?