标签: docker-machine

docker-machine:在某些wifi网络上没有主机到默认docker机器(使用仅限主机的vbox网络)的路由

我在OS X上运行docker-machine,它在我的家庭wifi网络(wifi-one)上工作得很好.

在另一个wifi网络(WIFI-二),我无法访问默认的机器,无论是通过搬运工机或坪.我已经尝试删除所有的docker和虚拟盒软件和缓存,并在连接wifi-two时重新安装,但无济于事.

docker-machine在虚拟盒中使用一个小vm,它使用仅主机的vbox网络(vboxnet0)在主机和vm之间进行通信.

在wifi-one上,我可以将网关ping到vboxnet0(192.168.99.1),我可以ping vm(192.168.99.100).在路由表中,我可以使用正确的界面查看到vm的路由:

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            dlinkrouter        UGSc           60        2     en0
...
dlinkrouter        c0:a0:bb:xx:xx:xx  UHLWIir        66      155     en0   1180
192.168.99         link#10            UC              2        0 vboxnet
192.168.99.100     8:0:27:db:16:21    UHLWIi          2       42 vboxnet   1109
...
Run Code Online (Sandbox Code Playgroud)

在wifi-two上,我可以ping vboxnet0网关,但不能ping vm.Ping报告请求超时,但是docker-machine报告"没有到主机的路由".路由表连接到wifi-two时,显示到wifi接口(en0)上vboxnet0仅主机网络的路由,而不是vboxnet0接口.同样好奇的是默认路由是到vboxnet0网关的路由,但路由表中没有wifi路由器的标志.尽管如此,互联网连接在wifi-two上运行良好.

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.99.1       UGSc           46        0     en0
...
192.168.99         link#4             UCS             9        0     en0
192.168.99.1/32    link#4             UCS             2        0     en0
192.168.99.1       dc:9f:db:2b:89:39  UHLWIir        46       61     en0   1197
192.168.99.100 …
Run Code Online (Sandbox Code Playgroud)

networking routing virtualbox docker docker-machine

5
推荐指数
1
解决办法
1431
查看次数

如何在不同子网络中的docker镜像之间公开端口?

我创建了两个docker网络:

docker network create --driver=bridge --subnet=172.1.0.0/16 --ip-range=172.1.5.0/24 --gateway=172.1.5.254 br1


docker network create --driver=bridge --subnet=172.2.0.0/16 --ip-range=172.2.5.0/24 --gateway=172.2.5.254 br2
Run Code Online (Sandbox Code Playgroud)

我这样做是为了促进该网络中更容易的容器交互(我不需要为该子网内的容器公开端口).

然而,现在,我有兴趣在Docker中的两个子网之间建立一些服务(可能A为172.1.0.0,B为172.2.0.0).

如何公开端口以便它们可以在两个子网之间相互连接?在创建docker子网之前,我可以-p 8000:8000在运行docker镜像时使用它来暴露端口,然后访问所需的端口.

我使用的是docker版本1.10.1和docker-machine.


文件表明这是可能的,但没有给出实际的例子:

在用户定义的桥接网络中,不支持链接.您可以在此网络中的容器上公开和发布容器端口.如果要将桥接网络的一部分用于外部网络,这将非常有用. 在此输入图像描述

docker docker-machine

5
推荐指数
0
解决办法
384
查看次数

如何从网络上的 docker 容器访问在本地主机上运行的网络服务器?

我有以下系统配置:

  • 在用户定义的网络上运行的 Docker 容器
  • docker-machine(在 OS:X 上使用 VirtualBox 将端口 9000 转发到 9000)
  • http://localhost:9000上运行的本地网络服务器

我不知道如何使这对web服务器基本的HTTP请求,从我的搬运工容器。

为了测试这一点,我正在使用:

docker exec testcontainer curl --data "foobaz=foo" http://{hostname}:9000/
Run Code Online (Sandbox Code Playgroud)

我尝试过的主机名:

  • '本地主机'
  • '127.0.0.1'
  • '192.168.99.100'(docker-machine IP)

每次我收到错误或超时。当我在本地运行 curl 命令时(不是在 docker 和我的主机 OS:X 机器上),我能够成功发布 http 请求。

我无法断开 docker 容器与我的用户定义网络的连接。我也无法将我的网络服务器添加该网络,因为它不在容器中运行。另外,我知道以另一种方式连接(卷曲到在 docker 容器中运行的网络服务器)很简单,但这不是我的用例。

如何成功地将该 http 请求从作为用户定义网络的一部分的 docker 容器路由到我的本地主机网络服务器?

macos docker docker-machine

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

使用docker swarm自动配置新主机

当docker swarm检测到没有足够的资源来安排所有服务时,如何自动配置新机器?

我使用rancher和docker swarm调度程序的设置,如果资源不足,服务创建失败:

exit status 1: Creating stresstest2_workerb1_1 Creating stresstest2_workerb2_1 no resources available to schedule container
Run Code Online (Sandbox Code Playgroud)

我可以轮询这个状态并在需要时调用docker机器,但是rancher不会尝试重新安排丢失的服务.我想知道是否有更集成的解决方案,也许是docker swarm中的一个钩子,可以用来动态调用docker-machine来创建或删除机器.

我目前正在使用Docker 1.11 + Docker Swarm或Docker 1.12在Swarm模式下决定Rancher,所以任何解决方案都可以.

docker docker-swarm docker-machine rancher

5
推荐指数
1
解决办法
271
查看次数

无法访问localhost:80上的容器的Web服务器

我无法访问容器的Web服务器,localhost:80但我可以访问Web服务器127.0.0.1:80.

我究竟做错了什么?

我在Mac上安装了docker Version 1.12.2-rc1-beta27(build:12496).

我用命令运行了一个容器docker run -d -p 80:80 training/webapp python app.py.

容器具有以下属性

$docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
baaf4676e548        training/webapp     "python app.py"     22 minutes ago      Up 22 minutes       0.0.0.0:80->5000/tcp   big_volhard
Run Code Online (Sandbox Code Playgroud)

我的理解是我应该可以访问该网站localhost:80.

这不起作用.我收到错误消息

Could not get any response
Run Code Online (Sandbox Code Playgroud)

我知道我使用Docker for Mac,因为我已经运行了命令env | grep DOCKER并且它没有返回任何输出.

第一次更新:我/etc/hosts看起来像:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
Run Code Online (Sandbox Code Playgroud)

第二次更新:我也注意到当我使用命令运行容器时docker run -d -P training/webapp python app.py,然后localhost:autoGeneratedPortNumber工作. …

docker docker-machine

5
推荐指数
1
解决办法
1139
查看次数

重置Docker Machine以在我的本地计算机上运行Docker命令

我现在正在学习码头工作,我遇到了令人困惑的事情.我开始使用docker-machine,这非常适合创建本地VM并在Digital Ocean上启动服务器.但是,我现在想要返回到docker命令在我的本地机器上执行的状态,以便我可以添加功能,构建和推送我的docker repo.

我知道如何更换到其他机器使用docker-machine env,但我如何回到没有活动的机器?如果我重启docker会发生这种情况,但我不想一直重启docker.似乎应该有一个命令吗?

只是为了澄清,我不是想连接到我的default机器.我希望docker命令在我的机器上执行,就像我在设置Docker Machine之前一样.

docker docker-machine

5
推荐指数
2
解决办法
2272
查看次数

Docker错误:Windows上的设备上没有剩余空间

我在Windows 7上使用docker并尝试从云下载图像.在提取下载后我遇到了错误.以下是日志片段

cba922442da5: Downloading 5.866 GB/5.866 GB
10d186ab9b98: Download complete
89c26a498cda: Download complete
write /mnt/sda1/var/lib/docker/tmp/GetImageBlob601918967: no space left on devic
e

 Tools docker image has been downloaded or upgraded to the newer version success
fully if already exist
Run Code Online (Sandbox Code Playgroud)

已经有几个与此问题相关的线程,我已经尝试过他们提供的解决方案,但它们没有用.我试图使用以下命令删除所有图像,但得到证书错误

$ docker ps -a -q
time="2017-03-30T13:09:16+05:30" level=info msg="Unable to use system certificat
e pool: crypto/x509: system root pool is not available on Windows"
Run Code Online (Sandbox Code Playgroud)

Docker配置文件

{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "192.234.345.231",
        "MachineName": "default",
        "SSHUser": "docker",
        "SSHPort": 53944,
        "SSHKeyPath": "C:\\Users\\sbha5\\.docker\\machine\\machines\\default\\id_rsa",
        "StorePath": "C:\\Users\\sbha5\\.docker\\machine", …
Run Code Online (Sandbox Code Playgroud)

docker docker-machine

5
推荐指数
1
解决办法
4619
查看次数

docker ps无效的绑定地址格式:

当我执行命令时,我得到:

$ docker ps
Invalid bind address format: "tcp://192.168.99.100:2376"

$docker-machine rm -f default
$ docker-machine create -d virtualbox default
$ (docker-machine env default)
Run Code Online (Sandbox Code Playgroud)

现在,我无法列出我的docker映像和容器。我该如何解决?

docker docker-machine

5
推荐指数
1
解决办法
3864
查看次数

在Windows中为Docker获取Kitematic错误

我在Windows 10计算机上安装了docker。

我的泊坞窗在命令行上工作正常。

但是Kitematic无法正常工作并且抛出错误以下

GetMachineName,(默认)调用。DriverName,(默认)调用。GetCreateFlags,(默认)调用。SetConfigFromFlags,(默认)调用。PreCreateCheck,(默认)命令:C:\ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe --version,(默认)DBG | STDOUT:,(默认)DBG | {,(默认)DBG | 5.2.6r120293,(默认)DBG | },(默认)DBG | STDERR:,(默认)DBG | {,(默认)DBG | },(默认)DBG | 命令:wmic计算机系统获取虚拟机监控程序存在,(默认)DBG | STDOUT:,(默认)DBG | {,(默认)DBG | HypervisorPresent,(默认)DBG | TRUE,(默认)DBG | ,(默认)DBG | },创建前检查错误:“此计算机正在运行Hyper-V。激活Hyper-V时,VirtualBox不会启动64位VM。使用Hyper-V作为驱动程序,或禁用Hyper-V管理程序。 (要跳过此检查,使用--virtualbox-no-vtx-check)”,打开C:\ Users \ ShubhamJain。docker\ machine \ machines \ default \ default \ Logs \ VBox.log:系统找不到指定的路径。,通知bugsnag: [创建前检查错误:“此计算机正在运行Hyper-V。激活Hyper-V后,VirtualBox不会启动64位VM。使用Hyper-V作为驱动程序,或禁用Hyper-V管理程序。(要跳过此检查,请使用--virtualbox-no-vtx-check)“],

我已经安装了docker工具和treid来使用它的Kitematic,但仍然收到此错误。

我试图重命名没有空间的docker工具文件夹并在.sh中设置相同的名称,但Kitematic仍然无法找到它。

我已经尝试了互联网上的许多选项,并且由于同样的原因,我的docker实际已损坏。我已经将其设置为出厂重置设置,然后它开始工作。

例:

https://jayvilalta.com/blog/2016/04/28/installing-docker-toolbox-on-windows-with-hyper-v-installed/

如果有人已经在窗口10中遇到此问题,请分享您的经验。

参考屏幕截图

在此处输入图片说明

任何解决方法都将有所帮助

docker boot2docker docker-machine kitematic docker-for-windows

5
推荐指数
1
解决办法
864
查看次数

适用于Mac OS的Docker桌面Catalina将Container中的SD卡卷安装为循环设备以使用dd闪存SD卡

我正在使用Mac版2.1.0.4的Docker桌面。我有一个Docker容器,它是一个Ubuntu 18.04 Linux VM,其中包含Yocto Build系统。我用它为我的NVIDIA Jetson Nano生成SD卡。在构建过程结束时,我具有* .img文件,可以将其直接“ dd”存储到SD卡中并用于引导我的Jetson Nano。我希望Docker容器从MacBook挂载SD卡卷,以便它可以从容器内部直接dd到SD卡,而不是从Mac终端手动复制并运行“ dd”。我通常通过在Linux中将(未安装的)/ dev / sdX设备挂载为具有Lostup的循环设备来执行此操作,然后运行“ dd”。

通过使用以下命令启动容器,我可以成功安装SD卡并查看其内容。

MacBook-Pro:~ me$ docker run -it -v /Volumes/pkop:/opt/myvolume jetson-nano bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

root@c4102f7124d4:~/Desktop/jetson-yocto$ ls /opt/myvolume/
a.txt  b.xt  lost+found
Run Code Online (Sandbox Code Playgroud)

我可以将文件从Mac或Container写入此共享卷,并从两个角度查看更改。

但是,我无法弄清楚(或在Google上找到)如何卸载共享卷(因此容器中未使用该共享卷)并能够直接对其进行“ dd”操作。

我怎样才能做到这一点?谢谢。

在此处输入图片说明

在此处输入图片说明

注意:我尝试了以下操作,很遗憾,它仍然无法正常工作:

MacBook-Pro:~ me$ mount
...
/dev/disk2s2 on /Volumes/BOOT (msdos, local, nodev, nosuid, noowners)
MacBook-Pro:~ me$ sudo diskutil unmount /dev/disk2s2
Password:
Volume BOOT on disk2s2 unmounted
MacBook-Pro:~ me$ sudo mkdir …
Run Code Online (Sandbox Code Playgroud)

macos virtual-machine docker docker-machine ubuntu-18.04

5
推荐指数
1
解决办法
124
查看次数