*注意:我知道这个问题,但是,它与Docker Toolbox有关,而不是与Docker Desktop for Mac有关,似乎每个工具都使用不同的位置来本地存储Docker图像
在哪里可以找到通过Docker Desktop for Mac从Docker Hub中提取的docker图像?
我尝试通过以下命令验证Docker是否正在运行.
docker run hello-world
Run Code Online (Sandbox Code Playgroud)
因此,Docker守护程序从Docker Hub中取出了"hello-world"图像,但我无法找到它.
我一直在尝试遵循这个教程:https://docs.docker.com/engine/swarm/swarm-tutorial/
我没有在一些真正的Linux主机或本地虚拟机上运行它,而是想为几台运行适用于Mac的Docker桌面的MacBook进行网络连接.
在本教程之后,我在两台机器上安装了适用于Mac的Docker桌面.在第一台机器上的终端docker swarm create工作并创建一个ca哈希和id.
继续第二台机器,我通过将其从一个粘贴到另一个来执行连接命令.
第二台机器无法连接.这是预期的,因为输出中显示的IP地址显然是虚拟机内的IP地址,而不是我机器上的地址.我尝试通过指定本地网络适配器的地址从教程转移,但它说它无法绑定到该地址.我知道所有端口都是打开的,机器可以相互连接.
所以在我看来,我从根本上误解了教程的目的或如何设置两台Mac,以便他们可以进行通信.通过Google搜索解决方案,似乎我需要做几件事:
运行分布式kv存储来帮助群集网络协调(但这不是新业务流程的重点?)在每台机器上设置从网络适配器到alpine linux docker守护程序的端口隧道放弃并只测试我的集群本地
更新:经过一些研究后,似乎我应该使用本指南创建一个覆盖网络.但本指南使用的是docker-machine.据我所知,我应该/不能使用docker-machine和Docker桌面用于Mac,或者这是不正确的?
https://docs.docker.com/engine/userguide/networking/get-started-overlay/
我在运行macOS Sierra的Macbook Pro上安装了Windows 10和Visual Studio 2017企业版以及Docker for Windows作为Parallels虚拟机,并启用了嵌套虚拟化.
启动Docker for Windows以运行Linux容器时,Windows 10虚拟机上的MobyLinuxVM Hyper-V映像似乎崩溃,并显示以下消息:
__CODE__
当我切换到运行Windows容器时,Hyper-V映像不会崩溃.
现在,我一直在阅读Docker文档,Parallels文档和大量论坛帖子.看起来Docker不支持在嵌套虚拟化中运行Docker for Windows,而且有很多Parallels用户曾经使用过它,但它在Parallels的Version {X}中停止工作.
有没有其他开发人员使用macOS + Windows 10 + VisualStudio2017 + Docker设置成功运行?如果是这样,你是如何实现这一目标的?
有人知道虚拟机上的Visual Studio 2017是否可以在主机操作系统上使用Docker for Mac?如果是这样,你是如何配置的?
或者是否有更好的替代方法来运行虚拟化Windows,并能够将Docker与Visual Studio 2017结合使用?如果是这样,你能描述一下这个设置吗?
parallels docker docker-for-windows docker-for-mac visual-studio-2017 docker-desktop
更新:使用:
kubectl expose deployment <Name-Of-Servce> --name=loadbalancer --port=8080 --target-port=8080 --type=LoadBalancer
在kubectl get services正显示出未决的:
loadbalancer LoadBalancer <x.x.x.x> <pending> 8080:32670/TCP 2m
Run Code Online (Sandbox Code Playgroud)
在Docker支持Kubernetes之前,我可以使用MiniKube和Helm:
helm install stable/jenkins
kubectl get services // To get the service name
minikube service original-llama-jenkins // << The service name
Run Code Online (Sandbox Code Playgroud)
现在我们有支持Kubernetes的Docker for Mac(Edge),你如何添加EXTERNAL-IP?
谢谢
Mac 10.11.5在这里.我特意尝试安装Docker for Mac(不是 Docker Toolbox或任何其他产品).我按照他们的安装页面上的所有说明进行操作,一切正常,直到他们要求您尝试运行nginx服务器(步骤3.浏览应用程序并运行示例).
跑步docker run hello-world工作精美,没有任何问题.我能够看到该图像所需的正确控制台输出.
但是,然后他们会要求您尝试运行nginx实例:
docker run -d -p 80:80 --name webserver nginx
Run Code Online (Sandbox Code Playgroud)
我跑了这个,没有错.控制台输出是预期的:
Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx
51f5c6a04d83: Pull complete
a3ed95caeb02: Pull complete
51d229e136d0: Pull complete
bcd41daec8cc: Pull complete
Digest: sha256:0fe6413f3e30fcc5920bc8fa769280975b10b1c26721de956e1428b9e2f29d04
Status: Downloaded newer image for nginx:latest
ae8ee4595f47e7057e527342783d035b224afd17327b057331529e2820fe2b61
Run Code Online (Sandbox Code Playgroud)
那么我跑了docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae8ee4595f47 nginx "nginx -g 'daemon off" 12 seconds …Run Code Online (Sandbox Code Playgroud) 我一直在学习Docker的最终目标是使用它来提供和分享Jupyter笔记本.下面是Dockerfile的示例:
FROM python:2
ENV PYTHONUNBUFFERRED 1
RUN pip install jupyter
RUN useradd --create-home --home-dir /home/docker --shell /bin/bash docker
RUN adduser docker sudo
ADD start.sh /home/docker/start.sh
RUN chmod +x /home/docker/start.sh
RUN chown docker /home/docker/start.sh
ADD prod_sentiment.ipynb /home/docker/prod_sentiment.ipynb
ADD output.txt /home/docker/output.txt
RUN chmod +x /home/docker/output.txt
RUN chown docker /home/docker/output.txt
EXPOSE 8888
RUN usermod -a -G sudo docker
RUN echo "docker ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
USER docker
ENV HOME=/home/docker
ENV SHELL=/bin/bash
ENV USER=docker
RUN printenv
CMD ./home/docker/start.sh
Run Code Online (Sandbox Code Playgroud)
该start.sh文件看起来像这样:
#! /bin/sh …Run Code Online (Sandbox Code Playgroud) Mac的Docker桌面中的内置DNS服务器确实很慢,因此默认情况下,我想使用其他DNS服务器。我知道我可以--dns=...在运行docker命令时添加,但是我想要一种为所有容器设置默认DNS服务器的方法,从而不必为每个容器分别指定DNS服务器。
如何为Docker for Mac上的所有容器设置默认DNS服务器?
我有用于实验的 docker 容器。所以我不知道我以后在尝试新应用程序时会使用哪些端口。是否可以在不将其暴露在 docker-run 命令中的情况下从主机使用 ip/port 访问 docker 容器应用程序?
由于某些原因,运行后我无法从Docker容器中分离出来docker attach <container>。该文档说要使用Ctrl-p, Ctrl-q,但似乎不起作用。我也尝试了ctrl-q + ctrl-p(组合,而不是按顺序)和ctrl-shift-q, ctrl-shift-p和ctrl-shift-q + ctrl-shift-p。例如,即使设置分离键--detach-keys="p"也不会从容器分离。
此外,其他事情似乎不起作用。例如,根据文档,ctrl-c应使连接的容器停止并脱离。但是,我无法ctrl-c在任何容器上工作。ctrl-q但是,与不同,它ctrl-c按预期方式提供反馈,^C并在终端中显示a 。
我已经注意到,由于某种原因,当我按时ctrl-p,会^P在终端中显示a,但是按ctrl-q或ctrl-shift-q不会显示终端反馈。
任何人都可以猜测为什么会发生这种情况吗?
如果重要的话,我在MacOS上使用iTerm2。此外,有问题的容器还通过发射docker-compose。
编辑:为清楚起见,我docker-compose up在以下compose文件上启动了我的容器:
version: '3'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: container-test
ports:
- "5050:5050"
Run Code Online (Sandbox Code Playgroud)
然后我使用附加:
$ docker attach container-test
Run Code Online (Sandbox Code Playgroud)
编辑2:经过一些测试,我可以确认MacOS终端中仍然存在此问题。
zookeeper.connect=localhost:2181
/etc/host样子如下:Run Code Online (Sandbox Code Playgroud)127.0.0.1 localhost MaatPro.local 255.255.255.255 broadcasthost ::1 localhost MaatPro.local fe80::1%lo0 localhost MaatPro.local
我的情况
"localhost:9092"
问题
(o.a.k.clients.NetworkClient) [Producer clientId=producer-1] Connection to node 0 could not be established. The broker may not be available.
使用Kubernetes,我构建了以下YAML文件来部署我的Pod:
apiVersion: v1
kind: Pod
metadata:
name: fetcher
spec:
hostNetwork: true
containers:
- image: entellectextractorsfetchers:0.1.0-SNAPSHOT
name: fetcher
Run Code Online (Sandbox Code Playgroud)
我采取了预防措施来设置hostNetwork:true
直接使用Docker守护程序,我最初也尝试将网络设置为主机,但是发现这不适用于Mac的docker。因此,我放弃了那条路线。我知道这与虚拟化有关。
1)Docker发生的虚拟化问题是否与我的本地kubernetes相同?基本上,主机网络是虚拟机,而不是我的mac?
2)我尝试更改代码,并根据文档添加以下地址作为引导服务器:host.docker.internal。但是问题仍然存在。基本问题是我正在使用环回地址的事实吗?我确实可以在我的网络地址上工作吗?host.docker.internal指向哪个地址?如何使其与环回地址一起使用?如果我完全不了解,对实现该功能需要执行的任何想法?
非常感谢您对此的任何帮助。
docker-for-mac ×10
docker ×9
kubernetes ×2
macos ×2
apache-kafka ×1
bash ×1
dns ×1
docker-swarm ×1
minikube ×1
nginx ×1
parallels ×1