问题标签 [docker-for-windows]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Windows Server 2016 TP4 上的 Docker-Compose 挂载
我使用以下命令在 Windows Server 2016 TP4 上创建了一个测试 docker 容器:
我看到了挂载的目录,它运行良好。
我想在我的 Windows Server 2016 TP4 环境中使用docker-compose做同样的事情。我创建了以下 docker-compose.yml 文件:
当我运行docker-compose up命令时,我收到此错误:
我的问题是,如何使用 docker compose 将 Windows 主机挂载到 Windows 容器?有不同的语法,我在 docker run 命令中使用了什么?
windows - Docker for Windows:使用相同的端口号在本地启动多个 docker 容器
我正在使用Docker Desktop for Windows(使用Hyper-V,而不是Docker Toolkit for Windows)。我想要完成的是启动 3 个以上的 docker 容器,并提供相同的端口集。
创建第一个 docker 容器后,我有http://docker:8091
(或http://10.0.75.2:8091
)可用,这很好。现在,我想做的是启动另一个具有相同端口号的容器。所以,类似http://docker2:8091
, 或http://10.0.75.3:8091
)。然后在 docker3 或*.4:8091
.
(请注意,启动三个将暴露端口重新分配给其他随机端口的容器是小菜一碟,但我想保留端口号)。
我尝试通过 Hyper-V 管理器向 MobyLinuxVM 添加网络适配器,但这似乎破坏了 Docker,我必须重新安装才能让它再次工作。
我尝试使用 docker-machine ( docker-machine create -d hyperv --hyperv-virtual-switdch DockerNAT AnotherBox
) 启动另一个 Hyper-V 实例,但这只是锁定了大约一半并且不起作用。(根据我在论坛上阅读的内容,Docker for Windows 上的 docker-machine 的意图并不是让我能够做到这一点,它只是为了管理云中的虚拟机)。
那么......有什么办法可以完成我想要做的事情吗?
docker - Docker 卷未与 Redis 一起使用(安装确实显示在检查中)
我的最终结论是我无法设置/c/users/...
位置,因为它没有在“Docker”中共享。
在此之后,我能够在我的所有容器实例中看到该/c/users/..
目录。然后我可以在每个实例上使用这个目录的标志,基本上将文件写入我的主机。我仍然不明白的是,我认为我目前并没有真正使用……但它确实有效……-v
volumes
我试图让我的 Docker 托管的 Redis 实例来保存它的数据,但似乎没有使用安装的卷。我将 Docker 与 VirtualBox/boot2docker 在组合工作的地方使用,但是我已经转移到 Docker for Windows,组合文件仍然可以工作,但我不确定该volumes
属性。
我的docker-compose.yml
文件:
添加或删除定义并不重要volumes
,因为它总是会显示如下内容docker inspect
:
该volumes
物业是否仍在与 Docker for Windows 一起使用,还是我遗漏了一点?
编辑:
如果我跑...
...我可以看到容器出现在 Kitematic 中,并且docker inspect
我可以看到一个挂载到我的本地文件夹。但是,本地文件夹未显示在 Kitematic 中...
如果我将数据添加到容器中托管的 Redis 服务器,然后停止容器并再次启动它,数据就消失了。
我尝试在 Kitematic 中手动设置本地文件夹。这似乎会重新启动容器,但我不确定是否再次传递了初始参数。你说:
“如果卷在运行时未联网”
我猜他们实际上是在运行时联网的,如控制台中所见。
不过,我可以将数据添加到容器中托管的 Redis 实例。但是一旦我重新启动容器,它就消失了......
docker - Windows 容器的 Docker 以 NAT 模式连接到主机(现代 docker 不是 boot2docker)
请注意,这不是先前看起来相似的问题的欺骗,至少我能找到。
我正在运行最新版本的 Windows docker,试图让一个容器能够连接到 localhost 以进行测试。我有充分的理由使用 NAT 模式 Virtualbox,来避免将数据库暴露给更大的网络。
我的设置过程需要完全自动化,这是让 VBox 处于 NAT 模式的另一点,而且复杂性中等。
我的构建过程包括这样的行:
为了让外界能够连接,它还做了这样的事情:
由于 NAT 路由,这仅允许在我想要从计算机外部访问的任何容器上访问计算机上的特定端口,即使暴露了更多端口(例如另一个容器中的 Postgres 端口)。到目前为止,一切都很好:只有我想要的端口暴露给外界,而且效果很好!
此外,在机器上运行的服务与 docker 容器建立连接,因此将所有 -p 端口暴露在本地很方便,而无需将上述数据库暴露给网络。
只是,现在我需要能够允许在 Docker 中像这样运行的软件连接到在 localhost 上运行的 Django 服务器。有没有办法在不将 VBox 的网络设置为桥接模式并将所有配置扔出窗口的情况下做到这一点?如果我必须做桥接,它可以以自动化的方式可靠地完成吗?或者,作为纯粹用于测试的解决方法,我可以让它连接到我的本地网络(即我的 Macbook)上运行所述服务器的另一台计算机吗?
非常感谢您的帮助和指导。
windows - Docker for Windows 和 Docker on Windows 有什么区别?
Windows 上的 Docker似乎是Windows Server 2016的内置功能?并支持在 Docker 容器内运行 Windows 并将 Windows 用作 Docker 容器主机。这支持Linux吗?我不这么认为,我认为它只支持运行 Windows Docker 容器。这似乎也由微软维护。
Docker for Windows似乎是 Docker 团队为将 Linux Docker 引入 Windows 而创建的单独安装。所以 Windows 可以是 Docker 主机,但所有容器仍然只是普通的 Linux 容器。这是否支持 Windows 容器?我不这么认为,我认为它只支持运行 Linux Docker 容器。这似乎也由 Docker 维护。
另一个有趣的注意事项是Docker Tools for Visual Studio似乎只支持Docker Desktop for Windows而不是Docker on Windows。
我真正在寻找的是两者之间的陈述差异,某种很好的比较。每个都试图实现哪些功能,它们在哪里相似,它们在哪里不同。他们会永远不同,还是会走到一起?
docker - Docker for Windows 不适用于卷
我正在尝试使用 ASP.NET Core、Docker Desktop for Windows和Visual Studio Docker Tools创建一个项目。
所以我创建了一个 ASP.NET Core 空项目并通过上下文菜单添加了 Docker 支持。
我的 docker-compose.debug.yml 看起来像这样:
当我开始时,什么都没有发生。浏览器返回未找到主机并且 Visual Studio 的调试正在停止。
但我已经调查过这个问题,如果我删除卷条目,它工作正常。浏览器返回Hello world
,我可以在 docker 容器内调试 ASP.NET Core 示例。
有人可以告诉我为什么吗?
Docker 共享驱动器处于活动状态(驱动器C:\
)。我的项目位于下方C:\
,并且还尝试使用不同的驱动器。任何人都有一个想法,为什么音量输入不起作用?
docker - 在windows上设置docker远程执行
我有一个 Windows 工作站和一个表面。我确实在我的 Windows 工作站上设置了我的 docker。是否可以在我的工作站上设置 docker,以便我可以在我的表面上进行“摇杆运行”,并且 docker 实际上在我的工作站上运行并将输出发送回我的表面。
我在网上搜索过;我在 Linux 上找到了很多演示,但在 Windows 上却很少。
linux - 了解不同的 Docker 组件
我有非常简单的理论问题。在Docker Desktop for Windows和 Mac OS 正式推出之前,我们在 VirtualBox 中使用了 Docker 。在 Virtual Box 中,我们得到一个虚拟机并使用命令对其进行管理,而如果我们使用 Docker Desktop for Windows 和 Mac OS docker-machine
,我们通常不会使用它。docker-machine
现在保留两个版本的视图:
- 什么是 Docker 主机以及它在两个版本中的作用?
- 如果我们使用 Docker for Windows,Docker 客户端现在被称为 Windows 上的任何终端?(我们现在不需要将我们的终端配置为 Docker 客户端来管理我们的容器吗?)
- Docker Engine 和 Docker Daemon 在两个版本中是相同的还是不同的东西?
- MobyLinux VM 在 Windows 的 Hyper-V 中的作用是什么?
- Docker 如何将我们的应用程序与主机操作系统隔离开来?
任何帮助将不胜感激。
docker - 如何在 Docker for Windows 中设置 docker 容器时间
是否可以在Docker Desktop for Windows上的 ubuntu 容器中设置日期和时区?目前日期比我的 Windows 主机晚一天+。
windows - 用于 Windows 网络的 Docker
我在理解 Docker for Windows 以及网络如何工作时遇到了一些麻烦。在带有桥接适配器和 Ubuntu 虚拟机的 VirtualBox 中,一切正常——我可以从我的主机 ping 虚拟机(反之亦然)。
- 如何从网络上的任何设备 ping 容器?
- 以及如何 ping 不在同一主机上运行的其他容器?
我的计划...
是让多台 Windows 机器(不是 vms),每台机器都运行一个 Docker 容器(以形成一个存储集群),这些容器需要相互通信(overlay
可能使用网络运行,或者这需要swarm
吗?)。我还需要在外部讨论这个问题,这是我能够开始工作的唯一部分,使用docker run -p
选项来公开我需要的容器中的端口。
为了详细说明我的过程,我的目标是构建一个在 Linux 上运行的 Amazon S3 风格的键值存储(特别是使用 Riak KV)。由于这将需要多台计算机运行该软件,在我看来,Docker 可以带来一些好处,包括易于设置和部署,以及在 Windows 上运行基于 linux 的软件的框架,这是我目前可以轻松访问的。
我测试过的几件事......
如果我使用默认桥接网络在同一主机上运行两个 Ubuntu 容器,它们可以相互 ping 通。ifconfig
列出具有 172.17... ip 地址的本地和 eth0 适配器。由此看来,我想要的并不是桥接器,因为我想要多个主机。
如果我使用“br-xxxxxxxx”和“vethxxxxxx”适配器运行 Ubuntu 容器,--network host
我会得到更多输出。ifconfig
从文档中,
在主机网络堆栈上添加一个容器
这听起来很有用,但也许我不明白。我知道 Docker for windows 运行 MobyLinuxVM,并使用 Hyper-V 适配器和交换机,主机指的是什么?windows pc还是这个虚拟机?使用--network host
,我仍然无法 ping 我的容器或从容器 ping 我的桌面。
其他想法...
Docker 的常见用途似乎不是基于 Windows 的,所以我无法找到足够多的参考资料。我的用例与 Docker 的正常使用有很大不同吗?谁能指出我在这里缺少的东西?
阅读有关 Hyper-V 适配器的信息后,除了如何启动容器之外,我似乎还需要更改网络适配器设置?我想,我很难理解在 windows、hyper-v 适配器/交换机、ubuntu 和 docker 之间的位置。