我正在为networking课程中的许多实验课程创build一个教室环境。 我正在考虑一个基于Docker容器的架构,它能够协调远程主机上的容器。 在会议上,我需要 在实验室的计算机中拉出容器 学生们可以联系和做他们的工作,但如果出现问题,我应该能够重置容器 保存容器并回滚到之前状态的能力(docker commit) 容器需要能够相互交谈 需要一定程度的抽象,因为任何学生都应该能够在没有我的帮助的情况下自行启动/停止/重置(我已经编写脚本来做这些事情……所以他们可以通过脚本来运行容器,能够以最less的docker知识甚至其存在来操作) 我可以发出命令,并从我的服务器上复制文件到他们的剧本 我已经分阶段完成了个别任务,但并没有真正把它们放在一起。 虽然我确定它会正常工作,但它有问题。 例如,我可以拉一个容器,但是我无法安装软件包或将文件从我的服务器上复制到主机中的远程容器中? 那可能吗 ? 我已经看到了在哪里实现,你可以使用一个安全的服务器在远程主机上创build容器,主机本身已经安装了它们,并且执行了在其中创build的容器的剧本。 这似乎有点复杂的我。 我想知道是否有一个更有效的方法来协调他们。 由于新的docker群具有networkingfunction。 我想知道是否有可能整合他们来满足我的要求。 据我所知,它从所有可用的主机和设备容器创build一个集群,考虑到它正在一个单一的系统上工作。 所以如果我要部署10个容器,可能会出现一个系统可能有多个容器。 但是有没有办法确保它们落在不同的系统上?在这种情况下,它会很好 Swarm还允许我创build集群,并使在一个系统中创build的容器能够与不同主机中的另一个容器进行通信。 Ansible + Docker不会让我这样做,除非我将docker0的网桥更改为主机的ip子网,所以容器会在这些范围内产生ip地址,从而可以在同一子网中访问其他人。 但说实话,我没有取得什么成功,它得到的IP地址,但不是唯一的,是奇怪的(其中一些产生的说192.168.43.1/24,这是网关地址)。 有没有其他方法让容器与networking中的其他容器进行通信? 过去一周以来,我一直在关注很多video和教程,但很less有解释清楚如何完成的。 如果有人对编排docker集装箱有很好的理解/经验,那么或许指点我一个更好的策略/方向将是非常感谢。
我已经通过这个命令行在Windows 7上通过docker安装了这个映像https://github.com/sharelatex/sharelatex-docker-image的 sharelatex $ docker run -d –name sharemongo mongo:latest $ docker run -d –name shareredis redis:latest $ docker run -d -P -p 80:80 -v /opt/sharelatex –env SHARELATEX_MONGO_URL=mongodb://mongo/sharelatex –end SHARELATEX_REDIS_HOST=redis –link sharemongo:mongo –link shareredis:redis –name sharelatex sharelatex/sharelatex and it seems to work 它可以运行。 但我有问题上传一个较大的文件(> 2MB)。 一个人告诉我,只要将这行添加到configuration文件nginx client_max_body_size 8m; 但我不知道如何改变已经通过docker运行的nginxconfiguration文件。 谢谢
我有一个运行在我的家庭服务器上的Fedora / couchdb映像,用于存储为研究收集的数据。 但是,最近我有一个访问CouchDB接口的问题,所以我试图重新启动容器面对这个错误: 无法启动容器80dd08153eac8f08a6b01638cbf4bfa4b7e667ec1f967c8c8b9b6fac0f362636:[8]系统错误:无法创buildpivot_root目录,错误的mkdir /home/docker/devicemapper/mnt/80dd08153eac8f08a6b01638cbf4bfa4b7e667ec1f967c8c8b9b6fac0f362636/rootfs/.pivot_root677464004:没有剩余空间装置 我相信这可能是由于容器中的数据量达到了10GB(?)。 所以这给我带来了两个问题: 他们是否仍然要让容器再次运行? 或者更重要的是, 2.是否可以检索CouchDB数据? 任何build议,因为收集的数据是非常重要的,我的工作。 谢谢,
我们在Amazon AWS上的Kubernetes上运行容器。 这个集群是通过一套kube-up脚本创build的。 一切准备正确,工作正常。 然而,我们碰到了一个障碍 – 我们相当大的服务器c4.xlarges只能运行40个豆荚。 这对我们来说是一个小数目,因为我们正在运行许多小的豆荚,一些很less使用。 有没有办法提高盐主或启动configuration这个限制? 这样做的最佳途径是什么? 谢谢。
我有以下设置: 私有OpenStack云 – 只有Web UI(Horizon)是可访问的 (API是有限的,但也许我可以访问) 我已经使用CoreOS设置了一个主 节点和三个节点 资源是标准化的(默认为OpenStack) 在GitHub上,我遵循了CoreOS的入门指南(即,我使用了提供的用于configurationcloud-config的默认YAML) 当我读扩展,如Web UI(kube-ui)可以添加为附加 – 我已经添加(只有kube-ui)。 现在,如果我运行一个类似simple-nginx的testing,我会得到以下输出: 创build豆荚: $ kubectl run my-nginx –image=nginx –replicas=2 –port=80 创造服务: $ kubectl expose rc my-nginx –port=80 –type=LoadBalancer NAME LABELS SELECTOR IP(S) PORT(S) my-nginx run=my-nginx run=my-nginx 80/TCP 获取服务信息: $ kubectl describe service my-nginx Name: my-nginx Namespace: default Labels: run=my-nginx Selector: run=my-nginx Type: […]
我有一个Dockernetworking,里面有两个容器。 当我使用假的目标IP地址和第二个容器的真实MAC地址运行nping时,数据包出现在具有不同源地址(MAC和IP)的tcpdump -eni eth0输出中,并且具有相当大的延迟(〜10s) 。 这是一个docker错误,或者我错过了什么? 这里是你如何重现这个问题。 运行这个脚本: docker network create –driver=bridge –subnet=10.16.17.0/24 so_con docker run -itd –name=con_A –net=so_con debian /bin/bash docker run -itd –name=con_B –net=so_con debian /bin/bash docker exec con_A sh -c 'apt-get update && apt-get install -y tcpdump' docker exec con_B sh -c 'apt-get update && apt-get install -y nmap' export A_MAC=`docker inspect […]
您好,我是新来的AWS ECS,我正在尝试部署一个docker集群。 我有一个私人github回购,我想要下载到我的工作目录,当我的docker集装箱启动,或可能有一些ebs卷预载,然后由我的ECS容器实例挂载它。 什么是最好的办法做到这一点,我已经被aws文档非常震撼,并没有看到任何谈论的git克隆凭证或ebs预装源代码。
我正在尝试使用本文档中所述的Amazon CloudWatch Logs日志logging驱动程序。 但是当我启动我的容器时出现以下错误 Error response from daemon: Cannot start container 1769b857d0ed51cf30b1c160485c9eb05f68ab07a84eaf861893d9d55e6139c4: Failed to initialize logging driver: Failed to get logging factory: logger: no log driver named 'awslogs' is registered 如何为docker注册驱动程序? 我应该修改docker的systemd脚本吗?
我已经build立了一个vpn的docker集装箱。 我使用–net选项添加了另一个带有Squid代理的容器,与vpn共享相同的networking。 从容器内运行traceroute,我可以看到stream量通过vpn路由。 Squid运行在默认端口3128上的代理容器中。如果我configuration了一个firefox来使用这个代理172.17.0.2:3128,它将使用代理来使用vpn访问Internet。 但是,为什么这只适用于我的docker主机? 如果我从我的工作站尝试,我会得到一个超时。 我可以使用telnet来尝试相同的事情, 在docker主机下面的结果超时, torbjorn@base telnet 192.168.1.100 3128 在docker主机上的连接, torbjorn@base telnet localhost 3128 我进一步尝试了tcpdump和route,并得出结论,在第一种情况下丢包。 想到的一个可能性是,docker可能添加了一个路由,以便将来自docker主机的数据包路由回主机。 是否有可能从其他地方发送的数据包路由到VPN? 我能做些什么来解决这种情况,以便我可以从docker主机以外的其他机器使用这个HTTP代理? 我在docker主机和docker集装箱上启用了IP。 创builddocker集装箱 docker run –cap-add=NET_ADMIN –device /dev/net/tun –name vpn -p 3128:3128 –expose=3128 –volume /home/torbjorn/docker/troyc-openvpn-client:/vpn -d troyc/openvpn docker run –cap-add=NET_ADMIN –device /dev/net/tun –name proxy -p 3128:3128 –expose=3128 –net=container:vpn –volume /home/torbjorn/docker/squid/cache:/var/spool/squid3 -d sameersbn/squid:3.3.8-5 检查容器 torbjorn@base:~$ docker […]
我正在做一个大约4个月没有涉及的项目。 在部署的所有内容工作正常之前,现在我在尝试部署更新eb deploy my-env-name时出现错误。 无法拉动Docker图像amazon / aws-eb-python:3.4.2-onbuild-3.5.1:拉存储库amazon / aws-eb-python time =“2016-01-17T01:40:45Z”level =“fatal” msg =“无法到达任何registry端点”。 检查快照日志的详细信息。 挂钩/opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh失败。 有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。 在eb-activity日志中,它进一步说明: [CMD-AppDeploy / AppDeployStage0 / AppDeployPreHook / 03build.sh]:活动执行失败,因为:拉存储库amazon / aws-eb-python 重复在UI中显示的内容。 原来是使用预先configuration的Docker 64bit Debian jessie v1.3.1运行Python 3.4。 我已经尝试升级到最新版本,它是2.0.6版本,但它从来没有完成(不需要进入具体的错误,单独的问题,如果可能,我想留在1.3.1)。 我也尝试升级到最新的1.x,但升级到2.0.6的结果是一样的。 任何想法,或其他任何我应该寻找的线索? 编辑:这是我的Dockerfile,它会自动生成的内容 FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1 EXPOSE 8080