标签: docker-for-windows

Docker for Windows网络

我在理解Docker for Windows以及网络如何工作方面遇到了一些麻烦.在带有桥接适配器和Ubuntu虚拟机的VirtualBox中,一切正常 - 我可以从我的主机(反之亦然)ping vm.

  • 如何从网络上的任何设备ping容器?
  • 如何ping其他容器不在同一主机上运行?

我的计划...

是有多个Windows机器(不是vms),每个运行一个Docker容器(形成一个存储集群),这些容器需要相互通信(overlay可能使用网络运行,或者这需要swarm?).我还需要在外部进行讨论,这是我能够工作的唯一部分,使用docker run -p选项公开我需要的容器中的端口.

为了详细说明我的过程,我的目标是构建一个在Linux上运行的Amazon S3风格的键值存储(特别是使用Riak KV).由于这需要运行该软件的多台计算机,在我看来,Docker可以带来诸多好处,包括易于设置和部署,以及在Windows上运行基于Linux的软件的框架,这是我目前很容易访问的.

我测试的情侣......

如果我使用默认的网桥在同一主机上运行两个Ubuntu容器,它们可以相互ping通.ifconfig列出具有172.17 ... ip地址的local和eth0适配器.从这一点来看,它听起来不像我正在寻找的桥,因为我想要多个主机.

单个主机上的网络相对较小

如果我运行Ubuntu容器,--network host我可以从ifconfig"br-xxxxxxxx"和"vethxxxxxx"适配器获得更多输出.从文档中,

在主机网络堆栈上添加容器

这听起来很有用,但也许我不理解.我知道Docker for Windows运行MobyLinuxVM,并使用Hyper-V适配器和交换机,主机指的是什么?windows pc还是这个VM?有了--network host,我仍然无法ping容器或从容器ping我的桌面.

其他想法...

似乎Docker的常见用法不是基于Windows的,所以我找不到太多引用.我的用例与Docker的正常使用有很大不同吗?任何人都能指出我在这里缺少的东西吗?

阅读Hyper-V适配器使我看起来除了启动容器之外还需要更改网络适配器设置?我想,我很难理解在windows,hyper-v adapter/switch,ubuntu和docker之间的位置.

windows networking hyper-v docker docker-for-windows

11
推荐指数
1
解决办法
7020
查看次数

如何使用SQL Server docker容器进行Windows身份验证

我已经浏览了所有可以在线找到的用于构建基于docker容器的应用程序的示例.我想运行在两个docker容器中运行的两个服务:

  1. 一个运行ASP.NET的Windows容器
  2. 一个运行SQL Server的Windows容器

简单的工作和许多例子.但是,在所有示例中,您需要使用SQL身份验证,并在运行SQL Server容器时提供硬编码的SA密码作为环境变量.您还需要将SA密码硬编码到ASP.Net代码中的连接字符串中(或者在配置文件中以其他方式提供它等)

在所有示例的底线中,密码在某处都是硬编码的.

在我们现在开发的大多数应用程序中,我们实际上使用Windows身份验证或使用分组的托管服务帐户.但据我所知,你不能将Windows容器添加到域,因此SQL服务器不是Windows域的一部分,所以我没有看到在这里使用Windows身份验证的方法.

那么任何人都可以用这种方式替代硬编码密码吗?

sql-server docker docker-container docker-for-windows

11
推荐指数
1
解决办法
7339
查看次数

Windows 10 Docker : /usr/bin/env: 'php\r': 没有那个文件或目录

我有一个 docker-compose.yml 文件,我在其中定义了 php 的图像和构建。它是为带有 php、nginx 和 postgresql 和 postgis 的 Symfony 应用程序制作的:

version: '2'
services: 

 front:
    image: nginx
    ports:
      - "81:80"
    links:
      - "engine:engine"
      - "db:db"
    volumes:
      - ".:/home/docker:ro"
      - "./docker/front/default.conf:/etc/nginx/conf.d/default.conf:ro"

 engine:
    build: ./docker/engine/
    volumes:
      - ".:/home/docker:rw"
      - "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro"
    links:
      - "db:db"
    working_dir: "/home/docker"



  db:
    image: camptocamp/postgres:9.6
    ports:
      - "5433:5432"
    environment:
      - "POSTGRES_DB=pfe"
      - "POSTGRES_PASSWORD=admin"
      - "POSTGRES_USER=admin"
      - "PGDATA=/var/lib/postgresql/data/pgdata"
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 上一切正常,但是当我尝试在 Windows 10 上运行相同的环境时,出现错误。

docker-compose exec engine bin/console doctrine:schema:create
    /usr/bin/env: 'php\r': No such file or directory
Run Code Online (Sandbox Code Playgroud)

php windows docker docker-compose docker-for-windows

11
推荐指数
3
解决办法
2万
查看次数

无法启动服务 web:OCI 运行时创建失败:

我可以在执行命令时寻求帮助吗 docker-compose up -d

我收到错误你能帮我如何使用 nginx 执行 php

Removing nginx-container
mysql-container is up-to-date
php-container is up-to-date
Recreating 2e6f7b9915c6_nginx-container ... error

ERROR: for 2e6f7b9915c6_nginx-container  Cannot start service web: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/host_mnt/c/webdock/firstweb/default.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/8261a085184069473ca52f3ad508386e84f0636baafbbc754e1447ea72427433/merged\\\" at \\\"/var/lib/docker/overlay2/8261a085184069473ca52f3ad508386e84f0636baafbbc754e1447ea72427433/merged/etc/nginx/conf.d\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

ERROR: for web …
Run Code Online (Sandbox Code Playgroud)

php docker docker-compose docker-for-windows nginx-config

11
推荐指数
1
解决办法
3万
查看次数

Windows 版 Docker 无法启动

我已经为 Windows 安装了 Docker 作为一个完整的菜鸟,希望尝试一下。我确保 Hyper-V 已启用,虚拟化也已启用

任何时候我尝试运行 docker 桌面时,鲸鱼图标都是红色的,它表明它无法启动,如果我尝试从 cmd 运行命令,我会收到以下错误

连接时出错:获取 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/images/json: open //./pipe/docker_engine: 系统找不到指定的文件。在 Windows 上的默认守护程序配置中,必须提升 docker 客户端运行以进行连接。此错误也可能表示 docker 守护程序未运行。

我不知道如何解决问题。

我还注意到,即使我通过添加/删除程序完全卸载 Docker,我列出 WSL 设备时的状态始终设置为“正在安装”

在此处输入图片说明

windows docker windows-subsystem-for-linux docker-for-windows

11
推荐指数
1
解决办法
3538
查看次数

未找到挂载点

我正在使用Jackson,CDI,Swagger和Drools在WildFly上运行Java EE 7应用程序(包含很多类).我认为这个错误起源于我开始使用Drools,但我不确定.由于没有引用本地类,我不知道错误源自何处.

AFAIK,应用程序没有问题,但是当我部署应用程序时,我收到以下错误:

ERROR java.io.IOException: Mount point not found
ERROR   at sun.nio.fs.LinuxFileStore.findMountEntry(LinuxFileStore.java:91)
ERROR   at sun.nio.fs.UnixFileStore.<init>(UnixFileStore.java:65)
ERROR   at sun.nio.fs.LinuxFileStore.<init>(LinuxFileStore.java:44)
ERROR   at sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:51)
ERROR   at sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:39)
ERROR   at sun.nio.fs.UnixFileSystemProvider.getFileStore(UnixFileSystemProvider.java:368)
ERROR   at java.nio.file.Files.getFileStore(Files.java:1461)
ERROR   at org.jboss.as.controller.persistence.FilePersistenceUtils.getPosixAttributes(FilePersistenceUtils.java:124)
ERROR   at org.jboss.as.controller.persistence.FilePersistenceUtils.createTempFileWithAttributes(FilePersistenceUtils.java:112)
ERROR   at org.jboss.as.controller.persistence.FilePersistenceUtils.writeToTempFile(FilePersistenceUtils.java:99)
ERROR   at org.jboss.as.controller.persistence.ConfigurationFilePersistenceResource.doCommit(ConfigurationFilePersistenceResource.java:55)
ERROR   at org.jboss.as.controller.persistence.AbstractFilePersistenceResource.commit(AbstractFilePersistenceResource.java:58)
ERROR   at org.jboss.as.controller.ModelControllerImpl$4.commit(ModelControllerImpl.java:789)
ERROR   at org.jboss.as.controller.AbstractOperationContext.executeDoneStage(AbstractOperationContext.java:743)
ERROR   at org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:680)
ERROR   at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:370)
ERROR   at org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1329)
ERROR   at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:400)
ERROR   at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:222)
ERROR   at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:208)
ERROR   at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$300(ModelControllerClientOperationHandler.java:130)
ERROR   at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:152)
ERROR   at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:148)
ERROR …
Run Code Online (Sandbox Code Playgroud)

docker docker-for-windows docker-desktop

10
推荐指数
2
解决办法
7009
查看次数

无法在 Windows 上启动 docker

尝试在 Windows 10 专业版上启动 docker 时,我继续收到以下错误。我的 HyperV 已打开并正在运行:版本 18.04.0-ce-win62 (17151) 通道:edge e0a85f6

任何帮助,将不胜感激!

无法创建:正在运行的命令停止,因为首选项变量“ErrorActionPreference”或公共参数设置为“停止”:Hyper-V 在尝试访问计算机“C001715587”上的对象时遇到错误,因为找不到对象。对象可能已被删除。验证计算机上的虚拟机管理服务是否正在运行。在 New-Switch, : line 117 at , : line 394 at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\ src\Docker.Core\pipe\NamedPipeClient.cs:line 36 at Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean executeAfterStartCleanup) in C:\gopath\src\github.com\docker\pinata\win\src\ Docker.Windows\Actions.cs:第 75 行,位于 Docker.Actions.<>c__DisplayClass15_0。

docker docker-for-windows

10
推荐指数
2
解决办法
9854
查看次数

防火墙阻止的Windows文件共享上的Docker

TL; DR

从VM上运行的docker容器我可以ping所有主机IP(例如10.10.10.1和172.24.185.209),但我无法ping 10.0.75.1.我的猜测是,一旦我弄清楚为什么我无法访问10.0.75.1网络适配器,共享问题将得到解决.


我已经阅读了这篇描述相同问题的帖子并尝试了各种建议而没有成功.我尝试过以下方法:

  1. 使用以下命令将Docker接口设置为私有:
    • Set-NetConnectionProfile -interfacealias"vEthernet(DockerNAT)" - NetworkCategory Private
  2. Telnet成功达到10.0.75.1 445
  3. 共享c驱动器并检查我是否可以从\ 10.0.75.1\c访问它
  4. 关闭"Domain","Public","Private"的防火墙
  5. 我试图为"vEthernet(DockerNAT)"卸载"Microsoft网络的文件和打印机共享"(按照某人的建议重新安装),但得到了错误:0x80071779
  6. 然后我取消选中"用于Microsoft网络的文件和打印机共享",为"vEthernet(DockerNAT)"单击"确定",然后重新打开它.
  7. 我已经重新安装了Docker for Windows几次

我使用以下内容:

  • Windows10版本1803(OS Build 17134.285)
  • Docker CE Version 18.06.1-ce-win73(19507),频道:稳定

更新时间:9/27/2018

我试图连接到虚拟机并四处寻找,但它不能 - 它一直说"视频远程连接断开".但是按照这个https://docker-saigon.github.io/post/Docker-Beta/#private-registries:ebf9573d6838c40027746e9d7482622a我在VM上运行了一个容器并通过它访问了VM.我正在使用以下内容运行容器,因此我可以完全访问来宾网络(--net = host)

docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
Run Code Online (Sandbox Code Playgroud)

我在主机上有以下适配器:

PS C:\WINDOWS\system32> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . …
Run Code Online (Sandbox Code Playgroud)

networking firewall hyper-v docker docker-for-windows

10
推荐指数
1
解决办法
847
查看次数

Docker 运行给出“CreateProcess:Windows 系统调用失败:系统找不到指定的文件。(0x2)”

我对 docker 很陌生。我正在尝试 dockerize 一个 helloworld API。但是当我尝试 docker run 图像时,我收到了这个错误:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container f891d7fc7af6e1183256043e6105fc87e25c6959d9745cc972b42c7b2e6f5a06 在创建系统调用过程中遇到错误:Windows无法找到指定的文件系统:(0x2) [事件详细信息:提供者:00000000-0000-0000-0000-000000000000] [事件详细信息:提供者:00000000-0000-0000-0000-0000000000000-0000-0000-0000-000000000000] .cpp(168)\vmcomputeagent.exe!00007FF683797B25: (caller: 00007FF68377A312) Exception(4) tid(108) 80070002 系统找不到指定的文件。CallContext:[\Bridge_ProcessMessage\ComputeSystemManager_ExecuteProcess\VmHostedContainer_ExecuteProcess] Provider: 00000000-0000-0000-0000-000000000000] 额外信息: {"CommandLine":"

我有一个简单的asp.net api。我把它发布到同一个文件夹./publish 这是我的 docker 文件

FROM microsoft/aspnet:4.7.1-windowsservercore-1709
WORKDIR /app

COPY ./publish .
WORKDIR bin
RUN ls
ENTRYPOINT ["dotnet", "HelloWorldDocker.dll"]
Run Code Online (Sandbox Code Playgroud)

ls显示HelloWorldDocker.dll是在目录中./bin (app/bin)。IDK这里有什么问题...

asp.net docker dockerfile docker-for-windows docker-desktop

10
推荐指数
1
解决办法
6074
查看次数

强制 Windows 版 docker 使用 Hyper-V 而不是 WSL2

从2.3.0.2版本开始,docker桌面可以安装在Windows 10家庭版上,因为它可以使用Windows功能WSL2而不是Hyper-V。Windows 10 家庭版未安装 Hyper-V。

我仅限于 Windows 10 家庭版,并且我正在从事的项目无法使用 WSL2 作为 docker-for-windows 后端;仅适用于 Hyper-V。我使用下面的批处理脚本在 Windows 10 Home 上安装了 Hyper-V,但无法在 docker 中从 WSL 切换到 Hyper-V。

该选项呈灰色。

该选项呈灰色。

如何在 Windows 10 家庭版上强制 docker 使用 Hyper-V 而不是 WSL2?

在 Windows Home 上安装 Hyper-V 的批处理脚本:

pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
Run Code Online (Sandbox Code Playgroud)

docker docker-for-windows docker-desktop

9
推荐指数
1
解决办法
8974
查看次数