我有3个networking接口: docker0 , eth0和eth0:0 (别名)。 auto eth0 iface eth0 inet static address 1.2.3.4 netmask 255.255.255.0 network 1.2.3.0 broadcast 1.2.3.255 gateway 1.2.3.254 auto eth0:0 iface eth0:0 inet static address 5.6.7.8 netmask 255.255.255.255 broadcast 5.6.7.8 docker0是由docker0创build的桥梁。 使Docker及其所有容器使用出站IP 5.6.7.8而不是1.2.3.4最简单的方法是什么?
我正在CentOS 7上运行Docker实例1.6。我正在使用这些实例进行开发,用户可以login并完成开发工作。 我的要求是我不希望任何开发人员从实例内部进行任何forms的传出连接。 我试图在主机使用IP表,但它阻止从主机连接,但不是从docker。 这里是我的iptable中可用的条目。 如果您能够build议我阻止docker集装箱内部连接到外部世界而不影响http连接,这将是一个很大的帮助。 # Generated by iptables-save v1.4.21 on Sun Jun 28 23:20:14 2015 *nat :PREROUTING ACCEPT [6680:929529] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [521:165135] :POSTROUTING ACCEPT [0:0] :DOCKER – [0:0] -A PREROUTING -m addrtype –dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype –dst-type LOCAL -j DOCKER -A POSTROUTING -s […]
我有一个通过Samba共享的文件夹和一个Docker容器,我想通过将它作为一个卷添加到Docker容器(是的,我知道这是不可移植的)来访问所述文件夹。 SELinux阻止容器访问该文件夹,因为该文件夹及其内容被标记为samba_share_t ,而不是svirt_sandbox_file_t 我知道smbd_t域可以访问一些SELinux标签(例如httpd_sys_content_t ,尽pipesesearch -s smbd_t –allow提供了一个完整的列表),但是svirt_sandbox_file_t不是其中的一个。 我看到了一些解决这个问题的方法: 通过networking访问容器中的samba共享(不需要在容器中安装samba,并且存在networking开销) 将文件夹及其内容svirt_sandbox_file_t为svirt_sandbox_file_t (防止Samba访问文件夹) 将该文件夹及其内容重新标记为public_content_rw_t (但也允许访问许多其他服务,我不想访问此文件夹) 创build一个策略,使svirt_lxc_net_t可以访问samba_share_t标签(由audit2allow生成,但可以让任何容器访问标记为samba_share_t的任何文件/文件夹) 我能想到的另一个select是用自己的标签创build自己的SELinuxangular色,只允许访问Samba和svirt(我以前没做过,但愿意尝试)。 我在这里错过了什么? 有没有更简单的方法来做到这一点?
我的工作站上有Docker和IPSEC VPN通道,但容器无法访问VPN后面的主机。 有什么我可以做的,例如IPTables或路线允许访问? [注:目前我正在libvirt托pipe的虚拟机中运行这些testing,然后libvirt桥的地址为192.168.122.1] 我的networking设置如下所示: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:0f:f2:bb brd ff:ff:ff:ff:ff:ff inet 192.168.122.87/24 brd 192.168.122.255 scope […]
我有一个docker容器,我无法从容器内运行DNS查找,虽然它从docker主机工作正常。 构buildDocker主机的configurationpipe理代码已知可以在市场上的标准RHEL 7映像上运行,因此这个问题被称为SOE RHEL 7映像中的内容。 RHEL 7.2 / Docker版本1.12.6,版本88a4867 / 1.12.6。 容器是RHEL 7.3。 SELinux处于启用/允许模式。 Docker主机是Amazon EC2实例。 一些configuration: # /etc/sysconfig/docker OPTIONS='–dns=10.0.0.10 –dns=10.0.0.11 –dns-search=example.com' DOCKER_CERT_PATH=/etc/docker ADD_REGISTRY='–add-registry registry.example.com' no_proxy=169.254.169.254,localhost,127.0.0.1,registory.example.com http_proxy=http://proxy.example.com:8080 https_proxy=http://proxy.example.com:8080 ftp_proxy=http://proxy.example.com:8080 容器和主机中的Resolverconfiguration是一样的: # /etc/resolv.conf search example.com nameserver 10.0.0.10 nameserver 10.0.0.11 如果我用–debug重新启动journalctl -u docker.service守护进程,我在journalctl -u docker.service看到以下journalctl -u docker.service : Aug 08 11:44:23 myhost.example.com dockerd-current[17341]: time="2017-08-08T11:44:23.430769581+10:00" level=debug msg="Name To […]
我正在考虑如何在几个星期内以认真的方式来做这件事情,而且还没有得出结论。 也许我想到了错误的方向。 假设你有一百个networking应用程序来来去去。 你需要一个类似gitlab的例子的nginxconfiguration: location / { proxy_pass http://gitlab; } 由于已经使用docker docker service create gitlab,因此nginx将能够通过它的入口networking中的swarm-vip假dns名称来parsinggitlab。 但是:只有服务容器正在运行。 否则,nginx将无法启动,因为[emerg] 1#1: host not found in upstream "gitlab" 现在,当你不得不运行一个高可用性的nginx时,这是一个脖子破碎的事情,而不是确保proxy_pass已经运行的应用程序。 每次你更新nginx服务,如果其他swarm服务中只有一个没有运行,即使是相同的秒。 如果这不起作用,为什么在这个世界上我们需要群体中的名字parsing? 你怎么解决这个问题? 我想过有关consul和dynamic生成nginx虚拟主机模板(甚至不考虑docker-nginx-proxy!),但是这些应用程序是非常不同的,你可以说每个应用程序都有自己的configuration。 而所有这些工作不是因为一个特殊的原因,只是为了解决nginx的解决问题?
我试图configuration多个域的Jetty,我面临的问题是Jetty运行与另一个名为SmartfoxServer的服务器产品,所以我不知道如果我可以实际configuration它,我喜欢的方式。 这是我的jetty.xml: <Configure id="Server" class="org.mortbay.jetty.Server"> <!– =========================================================== –> <!– Server Thread Pool –> <!– =========================================================== –> <Set name="ThreadPool"> <New class="org.mortbay.thread.QueuedThreadPool"> <Set name="minThreads">10</Set> <Set name="maxThreads">200</Set> <Set name="lowThreads">20</Set> <Set name="SpawnOrShrinkAt">2</Set> </New> <!– Optional Java 5 bounded threadpool with job queue <New class="org.mortbay.thread.concurrent.ThreadPool"> <Set name="corePoolSize">50</Set> <Set name="maximumPoolSize">50</Set> </New> –> </Set> <!– =========================================================== –> <!– Set connectors –> <!– […]
我刚刚build立了一个基于Dokku的基础设施,但我很好奇如何扩展它。 我遵循Digital Ocean的这个教程,但没有提到HA或可扩展性。 是否有可能加载平衡dokku实例? 如何为这种基于docker的基础设施提供HA? 我应该用Deis代替,还是等Flynn获得释放? 你们推荐任何关于这个主题的好书吗?
在这里,我有一些(也许是不同的)问题,但是彼此相关,所以我最好在一个问题上问他们。 我一直在试图让我的OpenVPN客户端(OpenVPN以桥接模式安装)连接到Docker容器。 众所周知,Docker容器都是通过一个桥( docker0桥或者什么)相互连接的。 我总是习惯在我的家庭服务器上使用自己的网桥( br0 ),在那里我设置Docker使用该网桥( br0 ),并桥接该网桥上的OpenVPN接口( tap0 )和我的物理接口( eth0 )通过局域网连接到我的家庭路由器。 这对我来说一直都很有效,所有的OpenVPN客户端总是能够访问在br0桥接的每个Docker容器(OpenVPN客户端和Docker容器在我的LAN范围内都有IP)。 几天前我租了一个VPS,我的物理接口直接连接到互联网(它具有独特的公共IP)。 我做了以前的一样(设置Docker使用我所有容器的br0 ),并在br0上桥接OpenVPN tap0 。 我面临的问题是,我的OpenVPN客户端无法ping或访问任何Docker的容器,(容器能够ping和访问其他Docker的容器,但不是OpenVPN客户端),并且客户端无法ping其他也是如此。 这有没有什么,我没有物理接口桥接? 如果是的话,我想知道为什么我应该桥接我的服务器的接口(通过局域网连接到任何路由器)除了OpenVPN的TAP接口,以在桥接模式下获得function的OpenVPN? 这个问题在我的脑海里又提出了另外一个相关的问题: 只要客户端是tap0接口的一部分,为什么不能简单地通过TAP接口访问对方。 我的物理界面扮演什么angular色? 如果我的问题确实是因为没有物理接口的桥接,我怎么才能让OpenVPN在没有物理接口的情况下在网桥模式下完全正常工作(或者至less可以是任何解决scheme,只要我的物理接口直接连接到互联网没有任何局域网)? 我希望有人能帮助我得到OpenVPN的工作 添加: 在观看一些video后,我仍然有这个问题,如果我有两个TAP接口,他们每个都映射到一个virtualbox系统。 tap0 -> vb0 , tap1 -> vb1 , tap0 and tap1连接到一个桥接器br0 (不连接到任何物理接口),只有tap0和tap1桥接在一起, vb0 and vb1将能够ping其他? (我现在对任何一种外部连接都不感兴趣)。 根据@shodanshok回答,不,他们不会,对不对? 直到现在我还不能明白为什么他们不能,请您详细解释一下这一点。
我正在使用Apache Solr附带的docker运行Solr。 我想configurationdocker,使它只接受来自某些IP地址的连接。 我知道我可以绑定docker到127.0.0.1只接受来自本地主机的连接: <Set name="host"><SystemProperty name="jetty.host" default="127.0.0.1" /></Set> 但是我如何设置它,以便它可以接受来自某些非本地主机IP地址的连接?