我在Debian 8.3节点上有两个Docker容器。 一个是官方postgres图像,一个是基本的凤凰/灵药应用程序。 我正在连接一个docker堆栈文件。 但凤凰是无法连接到postgres,除非我发布端口。 这让我觉得有些内部dockernetworking是错误的,因为这个节点是新的Debian安装,它可能是iptables。 这也不包括密码或主机名是错误的。 我在做什么错了什么是正确的方法来设置iptables规则,以允许两个容器进行通信? 在凤凰应用程序中的错误消息: app-1 | 2016-03-15T16:15:18.019402549Z ** (Mix) The database for App.Repo couldn't be created, reason given: psql: could not connect to server: Connection refused app-1 | 2016-03-15T16:15:18.019456447Z Is the server running on host "postgres" (10.7.0.1) and accepting app-1 | 2016-03-15T16:15:18.019468609Z TCP/IP connections on port 5432? 在postgres容器中输出日志文件 postgres-1 | […]
我试图通过一个nginx作为反向代理访问服务器上运行的多个docker集装箱。 每个容器都是独立的CMS。 有些是wordpress,有些是drupal等等。 我用以下命令启动容器: docker run -p 0.0.0.0:{$port}:80 -i -t loader-docker 这里最大的区别是我想通过一个path而不是一个子域访问每个容器。 例如: http : //example.com/docker-1 http://example.com/docker-2 我可以用下面的configuration很容易地做到这一点 server { listen 80; server_name example.com; location / {} location /docker-1/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass docker.server:8001; } location /docker-2/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header […]
我在testingdocker UCP设置上configuration代理时遇到问题。 我有一个3节点的testing设置,只有一个控制器(所以没有HA) 我在我的控制器节点(192.168.123.14,boot2docker)中下载了UCP客户端软件包,并将ca.pem,cert.pem和key.pem放入/ etc / docker / ssl /之后,运行以下命令: docker exec -ti ucp-kv curl –cacert /etc/docker/ssl/ca.pem –cert /etc/docker/ssl/cert.pem –key /etc/docker/ssl/key.pem https://192.168.123.14:12379/v2/keys/interlock/v1/config -XPUT -d \ value='listenAddr=":8080" dockerURL="tcp://192.168.123.14:2376" tlsCaCert="/certs/ca.pem" tlsCert="/certs/cert.pem" tlsKey="/certs/key.pem" [[Extensions]] Name="nginx" ConfigPath="/etc/conf/nginx.conf" PidPath="/etc/conf/nginx.pid" BackendOverrideAddress="" ConnectTimeout=5000 ServerTimeout=10000 ClientTimeout=10000 MaxConn=1024 Port=80 SyslogAddr="" NginxPlusEnabled=false AdminUser="admin" AdminPass="" SSLCertPath="" SSLCert="" SSLPort=443 SSLOpts="" User="www-data" WorkerProcesses=2 RLimitNoFile=65535 ProxyConnectTimeout=600 ProxySendTimeout=600 ProxyReadTimeout=600 SendTimeout=600 […]
我有一台弹性负载均衡器,运行在两台机器上的基于Go的Docker服务之前。 每次我重新启动Go服务时,来自某些客户端的初始连接在失败和重试之前需要几分钟的时间,这最终会起作用。 这不是健康检查(加起来大约1分钟),奇怪的是,它似乎是机器或按会话。 此时我的空闲超时设置为1秒。 所以,例如,健康检查好之后: 我会用chrome刷新一个页面,它会立即加载 我会尝试从同一台计算机curl页面,它会挂起(我不会看到服务器日志中的访问) 我会尽量蜷缩个人服务,并立即运作 我会尝试从移动客户端连接,并超时 我会卷起另一台电脑,它的工作 我在这里错过了什么? 我没有启用粘性会话,在我看来,每一个都应该立即工作。 在ELB连接上是否有某种基于客户端的限制?
当我运行一个nginx作为代理(在docker容器中)时,我有一个传递我的cookie的问题。 这是我的nginx代理的configuration: location /test { proxy_pass http://test-backend:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } 当我运行我的后端没有代理我有我的回应中的cookie。 但是,如果我使用代理运行它的cookie没有通过代理传递。 我错过了什么样的设置?
我有一台非常强大的机器,运行Ubuntu 16.04服务器。 它运行了几个docker集装箱和虚拟机(使用VirtualBox),以下简称VM。 目前主机已经分配了一个IP地址(比如说192.168.1.10),通过NATing访问虚拟机上的业务(如192.168.1.10:80 – > 172.17.0.2:80),这是不尽人意的。 相反,我想将多个IP地址(比如192.168.1.100-110)绑定到主机接口,并将其他IP地址的stream量转发给虚拟机。 这导致映射<public IP> <–> <private IP> 。 我已经能够完成这个第一部分,通过添加[…] up ip addr add 192.168.1.1xx/24 dev ens3 label ens3:0 down ip addr del 192.168.1.1xx/24 dev ens3 label ens3:0 […] /etc/network/interfaces文件(其中ens3明显是主机networking接口的名称)。 这意味着额外的IP地址正在运行。 但是第二部分让我头痛。 到目前为止,我只考虑过基于iptables的解决scheme,因为看起来最合适,而且我读过的所有指南都使用了它。 所以我所做的是通过在/etc/sysctl.conf添加net.ipv4.ip_forward=1来激活IP转发。 然后,我发出以下命令来执行转发: iptables -t nat -A POSTROUTING -d 172.17.0.2 -j SNAT –to-source 192.168.1.100 iptables -t nat -A […]
过去几天我一直在扯掉我的头发。 我有一个EC2实例和Ubuntu一起,并且设置了我的AWS实例,以便所有访问端口8088和8090的stream量都被允许进入。通过这个链接 ,我认为只要使用GUI浏览器,因为我没有访问我的EC2实例上的GUI。 所以我运行这个命令(从教程): docker run -u zap -p 8088:8088 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh 它什么也不说。 但是当我使用端口8088进入公共EC2 IP时,我只是收到一个错误,提示“无法访问此站点”。 我已经成功地在这个EC2实例上的另一个端口上设置jenkins,并且可以访问..所以我不确定为什么我在运行OWASP / ZAP时无法访问这个端口。 当我运行sudo iptables -t nat -L -n我得到以下内容: Chain PREROUTING (policy ACCEPT) target prot opt source destination DOCKER all — 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT) target prot opt source destination Chain […]
我们有以下情况,在两个子网中有两个NIC的ens8: IP 192.168.100.74/24主机ens8: IP 192.168.100.74/24和ens9: IP 172.20.102.24/25 ,默认网桥docker0 IP 172.17.0.1/16和第二个网桥app_net IP 172.21.0.1/24 。 192.168.100.1是主机(Internet网关)上的默认网关。 docker集装箱有一个使用SNAT的固定传出IP,请参阅四种方式将docker集装箱连接到本地networking – 使用NAT 。 这是通过两个命令完成的,分配目标地址到主机接口ip addr add 192.168.100.234/24 dev ens8并添加iptables规则iptables -t nat -I POSTROUTING -s 172.21.0.4 -j SNAT –to-source 192.168.100.234 。 容器是使用来自桥app_net的IP创build的。 在主机上,我可以在子网192.168.100.x和172.20.102.x以及互联网(例如google.com)中ping / traceroute IP。 在一个容器中,我可以在子网192.168.100.x ping / traceroute IP,我也可以ping通google.com,但是我不能在172.20.102.x ping任何东西,除了172.20.102.24 。 看到下面的输出。 # traceroute -I 192.168.100.10 traceroute to 192.168.100.10 […]
当我尝试在本地networking上使用nginx反向代理configurationJira 7.3.5时遇到了一个小问题。 我使用cptactionhank jira docker镜像和jwilder nginx-proxy docker镜像。 一切似乎运行良好,但自从我更新到版本7.3.5,Jira报告“小工具的基础url”的问题。 当打开Jiraconfiguration面板的support-tools部分时,它显示“JIRA无法通过configuration的基本URL访问自己”。 结果是仪表板上的小工具不报告其正确的名称。 似乎需要通过端口8080重新路由到端口80的stream量。当我把Jira中的基础URL设置到端口8080,问题消失,但不幸的是我所有的jiraurl将后缀8080端口。我尝试设置X_PROXY_PORT为80,并试图在我的docker-compose环境中设置VIRTUAL_PORT,但没有任何变化。 我希望这里的任何人都有这个设置的经验? 这是我的jira docker-compose.yml文件: version: '2' services: jira: container_name: jira restart: always image: cptactionhank/atlassian-jira-software:latest ports: – "8080:8080" volumes: – jira-data:/var/atlassian/jira – jira-logs-data:/opt/atlassian/jira/logs dns: 192.168.2.4 expose: – "8080" hostname: jira.internal.mydomain.com network_mode: bridge environment: – VIRTUAL_HOST=jira.internal.mydomain.com volumes: jira-data: external: true jira-logs-data: external: true 这里是我的nginx docker-compose.yml文件 version: '2' […]
我正在尝试使用用户命名空间function和sudo来获得Docker容器。 如果我用-u标志设置为一个随机的UID创build容器,那么sudo不起作用,你会得到这个消息: sudo: unknown uid 1234: who are you? 用户显然不在/etc/passwd ,这对sudo造成了问题。 我试图让这个图像与OpenShift的默认设置,即生成一个随机的UID,这是根组(0)的一部分,但我需要以后运行固定用户的命令,所以想要使用sudo做到这一点(并严格控制哪些命令可以运行)。 如果我向/etc/passwd追加一个条目,似乎工作起来,但看起来很丑,因为它需要在每个容器启动时运行(因为/etc/passwd不在卷中)。 有没有人有任何其他的build议? 编辑:请注意,OpenShift每次运行容器时都会生成一个不同的随机UID。