我在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) 我创建了两个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.
该文件表明这是可能的,但没有给出实际的例子:
在用户定义的桥接网络中,不支持链接.您可以在此网络中的容器上公开和发布容器端口.如果要将桥接网络的一部分用于外部网络,这将非常有用.
我有以下系统配置:
我不知道如何使这对web服务器基本的HTTP请求,从内我的搬运工容器。
为了测试这一点,我正在使用:
docker exec testcontainer curl --data "foobaz=foo" http://{hostname}:9000/
Run Code Online (Sandbox Code Playgroud)
我尝试过的主机名:
每次我收到错误或超时。当我在本地运行 curl 命令时(不是在 docker 和我的主机 OS:X 机器上),我能够成功发布 http 请求。
我无法断开 docker 容器与我的用户定义网络的连接。我也无法将我的网络服务器添加到该网络,因为它不在容器中运行。另外,我知道以另一种方式连接(卷曲到在 docker 容器中运行的网络服务器)很简单,但这不是我的用例。
如何成功地将该 http 请求从作为用户定义网络的一部分的 docker 容器路由到我的本地主机网络服务器?
当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,所以任何解决方案都可以.
我无法访问容器的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-machine,这非常适合创建本地VM并在Digital Ocean上启动服务器.但是,我现在想要返回到docker命令在我的本地机器上执行的状态,以便我可以添加功能,构建和推送我的docker repo.
我知道如何更换到其他机器使用docker-machine env,但我如何回到没有活动的机器?如果我重启docker会发生这种情况,但我不想一直重启docker.似乎应该有一个命令吗?
只是为了澄清,我不是想连接到我的default机器.我希望docker命令在我的机器上执行,就像我在设置Docker Machine之前一样.
我在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 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映像和容器。我该如何解决?
我在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
我正在使用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) docker ×10
docker-machine ×10
macos ×2
boot2docker ×1
docker-swarm ×1
kitematic ×1
networking ×1
rancher ×1
routing ×1
ubuntu-18.04 ×1
virtualbox ×1