Tag: linux containers

Docker容器无法ping通networking侧

我正在学习docker集装箱,现在我正在尝试为docker集装箱设置一个networking。 Docker基本上使用具有172.17.0.0/16networking的'docker0'网桥,并且该networking不是同一个主机networking。 我想要docker容器和主机容器使用相同的networking。 所以现在我正在试图在没有“桥梁驱动程序”的情况下补充docker集装箱的networking。 我正在使用共享器使用192.168.77.0/24networking。 我希望主机和docker容器使用这个networking。 我在这里引用 – https://docs.docker.com/v1.7/articles/networking/#how-docker-networks-a-container 。 下面是我尝试组成容器networking的命令。 所有的命令都以root用户身份运行。 # ifconfig eth0 promisc # docker run -i -t –net=none –name net_test ubuntu_net /bin/bash # docker inspect -f '{{.State.Pid}}' net_test # 14673 # pid=14673 # mkdir -p /var/run/netns # ln -s /proc/$pid/ns/net /var/run/netns/$pid # brctl addbr my_bridge # brctl addif my_bridge eth0 # […]

在Docker容器中logging新的连接

如何在docker集装箱内logging新的连接? 在一台普通的虚拟机或者物理机器上,我们可以利用iptables的日志logging,但是在一个docker容器中,内核日志是看不到的。 所以像这些命令不会工作: `iptables -A OUTPUT -m state –state NEW -j LOG –log-prefix ' OUTBOUND: ' –log-level 1` 我试图在linux中使用ss来捕获新的连接,但无法find正确的filter。 任何帮助将不胜感激。

libcontainer与Docker vs OCF vs runc?

我试图更好地理解Docker世界,似乎不能把我的大脑包围在这些差异之间。 我相信 OCF是OpenContainers认可的新兴容器标准,我相信 Docker将成为该标准的第一个参考实现。 但即使如此,我担心Google神似乎不能为以下方面提供答案: 什么是OCF“标准”? 只是一个书面文件? 一个书面的API? 一个编译的C库? 这个标准所规定的具体项目的一些例子是什么? 我猜想,如果没有真正理解一个“ 容器 ”是什么,那么我很难理解容器的统治标准究竟是什么。 runc和libcontainer如何适合Docker / OCF方程?

docker集装箱 – 如何configuration,以便在stream浪汉中运行时获得可行的IP地址?

Docker(www.docker.io)看起来棒极了。 但是,在安装VirtualBox,Vagrant …以及Mac上的Docker之后,我发现无法从另一台计算机(或Mac上的terminal会话)访问在Docker容器中运行的服务。 我试图访问的服务是Redis。 问题似乎是没有路由到分配给Docker容器的IP地址。 在这种情况下,容器的IP是172.16.42.2,而Mac的IP是196.168.0.3。 一对夫妇笔记: 可以访问它 – 但只能从VirtualBox会话中访问。 这可以使用redis-cli -h 172.16.42.2 -p 6379完成。 我已经添加了“config.vm.network:桥接”的VagrantFile试图获得,但没有解决问题。

Docker MAC地址生成

我有一个关于在Docker容器和UUID生成中运行的应用程序的问题。 这是我们的场景: 目前我们的应用程序正在使用事件驱动框架。 对于我们根据mac地址生成UUID的事件,pid, 时间戳和计数器。 为了在像CoreOS这样的分布式系统上运行容器(虽然机会非常非常低),但不能保证用于生成UUID的所有参数对于每个容器都是唯一的,因为集群中一个服务器上的一个容器可以生成UUID使用相同的mac,pid,时间戳和计数器作为集群上的另一个容器。 实质上,如果这两个UUID都是生成一个事件并发送给我们的消息总线的话,那么显然会有冲突。 在我们的分析中,这种情况似乎归结为每个Docker容器上的mac地址的唯一性。 所以要坦率地说: 容器内的MAC地址有多独特? 如果没有手动设置,如何生成MAC地址?

Linux命名空间:networking命名空间是否可以存在而不与进程关联?

ip netns创build对/var/run/ns (命名的)networking命名空间的引用,这可以很容易地被跟踪。 同样,可以通过/proc/[pid]/ns/net来确定。 但是,一些自定义程序可能会创build一个networking并将相应的inode保存在其他非常规位置。 这可能难以确定是否有净ns我们可以列出。 其次,当进程退出时, unshare <cmd>会破坏networking,这很好。 但是,即使在命令/进程退出之后, ip netns exec <netns> <cmd>仍将保留ns。 所以我相信,任何自定义程序都可以做到这一点。 因此,问题是:一个自定义程序是否有可能创build一个未命名的networkingns,并且它与任何进程都没有关联 ? 此外,是否有可能从用户空间列出这样的(隐藏的)ns,因为我们不知道到inode的path? (当然内核有一个ns的链表)一段代码会有帮助。

如何configurationDocker容器可以通过主机外部的container_ip:port访问?

我有一台主机,有多个IP地址分配给一个networking接口。 我想configurationDocker为了使容器“响应”每个IP地址分配给主机的IP地址。 这可以用libcontainer来完成,还是必须使用LXC驱动程序,并使用–lxc-conf="lxc.network…"运行我的容器? 提前致谢。 UPDATE 我希望每个容器都可以从外面到达; 与默认的Dockerconfiguration,我只能暴露一个端口,并通过host_ip:exposed_port而不是container_ip:port到达容器。 第二个选项可以以某种方式configuration吗?

创buildcouchbase时Docker错误 – ulimit:打开文件:无法修改限制:操作不允许

我正在尝试为Couchbase创build一个docker镜像,并且在CentOS镜像上得到了dockerfile的错误信息。 # expose default port EXPOSE 8091 ENV PATH $PATH:/opt/couchbase/bin RUN cd /var/tmp &&\ wget http://packages.couchbase.com/releases/2.5.0/couchbase-server-enterprise_2.5.0_x86_64.rpm &&\ rpm -ivh couchbase-server-enterprise_2.5.0_x86_64.rpm &&\ chkconfig couchbase-server on &&\ service couchbase-server start #add start script to the container ADD start /start #make the script executable RUN chmod 0755 /start EXPOSE 11211 11210 11209 4369 8092 18091 18092 11214 11215 […]

Docker轨道迁移

我试图让docker和fig运行我的rails应用程序,它也包含redis服务器,mongodb,postgres和nginx,下面是我的fig.yml的样子: pg: image: docker-index.my.com/postgres ports: – 5432 redis: image: docker-index.my.com/redis ports: – 6379 mongodb: image: docker-index.my.com/mongodb ports: – 27017 app: build: . command: bundle exec rails s volumes: – .:/beesor ports: – 3000:3000 links: – pg – redis – mongodb environment: RAILS_ENV: production 一切工作正常,直到启动应用程序的时刻,因为轨道初始化器钩在服务器启动,然后我得到有关数据库连接的错误,数据库不存在! 当然,因为它没有在Dockerfile上创build(见下文) Dockerfile内容: # DOCKER-VERSION 0.10.0 FROM docker-index.my.com/ruby:1.9.3 MAINTAINER my.com RUN apt-get […]

如何在运行的docker容器中dynamic地编辑文件

背景 我已经build立了一个npm服务器(sinopia)docker镜像( https://github.com/feuyeux/docker-atue/blob/master/docker-images/feuyeux_sinopia.md ),并且在CMD行中,它将启动每当容器生成时。 CMD ["/opt/sinopia/start.sh"] 这个shell会dynamic地创build一个yaml文件。 sed -e 's/\#listen\: localhost/listen\: 0.0.0.0/' -e 's/allow_publish\: admin/allow_publish\: all/' /tmp/config.yaml > /opt/sinopia/config.yaml 题 我希望我可以在容器运行时编辑这个config.yaml,因为我希望内容应该按需更改。 看快照照片 如上所示,第一行运行一个sinopia容器,在这个容器中,有/opt/sinopia/config.yaml。 但我不知道如何获得这个正在运行的容器,并编辑和检查这个文件。 如果我做了sinopia-ls的行,那么有一个新的容器运行,而不是运行之前的容器。 多谢你们! 答案(详情请看下面我接受的) sudo nsenter –target $PID –mount –uts –ipc –net –pid root@58075317e47d:/# ls /opt/sinopia/ config.yaml config_gen.js start.sh storage root@58075317e47d:/# cat /opt/sinopia/config.yaml