看到CoreOS被devise成运行docker集装箱,我想知道是否有办法将HTTP负载平衡器上的后端服务直接映射到在单个CoreOS实例上运行的Docker Images。 这是我要去的结构: www.example.com/marketing -> docker:marketing-app www.example.com/accounts -> docker:accounts-app www.example.com/ -> docker:www-app … 我知道这可以通过使用Ingress的Kubernetes完成 – 每个Docker容器将被HTTP负载均衡器视为后端服务,这最终将用于生产; 对于我的testing/ qa / demo设置,我正在寻找更简单的东西,一个大的CoreOS实例,运行多个Docker容器,并且具有完全相同的HTTP负载均衡器(稍后将在产品中使用)指向Docker容器CoreOS实例。 CoreOS有这样的function吗? 如果不是,除了启动一个NGINX容器来将HTTP负载均衡器的所有stream量路由到不同的容器之外,还有什么其他select?
我正在使用官方图像设置私人Dockerregistry。 我已经使用下面的docker-compose文件启动了一个实例: registry: restart: always image: registry:2.3.1 ports: – 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm SEARCH_BACKEND: sqlalchemy SQLALCHEMY_INDEX_DATABASE: sqlite:////opt/sqlitedb/reg.db volumes: – /docker/registry/data:/var/lib/registry – /docker/registry/certs:/certs – /docker/registry/auth:/auth – /docker/registry/search:/opt/sqlitedb 我可以login: root @ domain:/ home / foo#docker login registry.domain.com:5000 用户名(foo):foo 密码: 警告:login凭证保存在/root/.docker/config.json中 login成功 我可以将图像推送到私人registry没有任何问题: root @ domain:/ home / foo#docker标签hello-world […]
我正在使用使用systemd和docker的CoreOS。 systemd和CoreOS的一个大问题就是它不能和docker一起玩100%。 或者也许docker工人也不玩百分百。 我遇到的另一个问题是日志中logging日志事件似乎来自“docker”,这是不正确的。 他们来自docker运行的过程。 这通常不是一个大问题,但是当您将这些日志转发到另一个服务(如ELK堆栈)时,您无法弄清nginx日志与其他服务日志是什么。 他们的来源是所有docker工人! 有没有办法解决这个问题? 我使用的是Docker 1.9,这是CoreOS Stable所具有的function。 所以我没有直接使用docker的json输出的特权。
我正在运行nginx-proxy(jwilder)和nginx-webserver(供应商nginx容器)的docker镜像。 nginx-proxy在nginx-webserver之前。 nginx-proxy支持http2,默认启用。 我可以看到,在开发工具中,我所有的内容都是通过h2协议下载的。 但是我的后端(nginx-vendor)被configuration为使用端口80和http1.1。 现在我的问题是双重的: 我明白浏览器/服务器通信的好处。 但是在两个nginx服务器之间运行http2有没有同样的好处? 我如何testing第二个nginx是使用http2?
我使用下面的configuration在Docker容器中运行Nginx作为反向代理。 它基本上将请求redirect到运行在同一台机器上的另一个Docker容器 问题 问题是访问日志中的输出指出了错误的客户端IP地址,具体来说,我得到了Docker主机172.17.0.1 IP地址: 172.17.0.1 – – [24/May/2016:19:50:18 +0000] "GET /admin/ HTTP/1.1" 200 19243 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0" "-" 我试图按照这个post关于set_real_ip_from指令的build议,但没有任何成功。 组态 server { listen 8000 ssl; server_name example.com; access_log /var/log/nginx/host.access.log main; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.key; set_real_ip_from 172.17.0.1; real_ip_header X-Forwarded-For; real_ip_recursive on; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For […]
我在Ubuntu的16: 我有一个服务器运行一个docker容器Bind9作为我的networkingDNS服务器在192.168.3.70 。 从我的networking的所有主机使用这个作为DNS,它很好。 我有运行Jenkins的主机上的另一个容器和DNS不起作用。 这是我用/etc/init.d/docker尝试的: # modify these in /etc/default/$BASE (/etc/default/docker) DOCKER=/usr/bin/$BASE # This is the pid file managed by docker itself DOCKER_PIDFILE=/var/run/$BASE.pid # This is the pid file created/managed by start-stop-daemon DOCKER_SSD_PIDFILE=/var/run/$BASE-ssd.pid DOCKER_LOGFILE=/var/log/$BASE.log DOCKER_OPTS="–dns 192.168.3.70 –dns 8.8.8.8" DOCKER_DESC="Docker" 这不起作用,Jenkins仍然没有DNS。 当然,我已经重启守护进程,没有任何改变。 怎么了? 编辑 所以,我运行docker exec -i -t d…… /bin/bash并得到了一个bash shell。 cat /etc/resolv.conf # Dynamic […]
有没有人有在AWS上运行Consul Agent的经验? 我有一个consul服务器集群正在运行,但想要使用AWS EB为每个Host实例部署Docker应用程序和docker consul代理(progrium / consul),以便应用程序可以使用本地主机上的consul,而不是我所有的应用程序直接回到领事服务器组。 这个页面提供了一个教科书Consulnetworking的一个很好的例子(没有引用AWS或者docker等) – https://jlordiales.me/2015/01/23/docker-consul/ 这是我的Dockerrun.aws.json { "AWSEBDockerrunVersion": "2", "authentication": { "bucket": "example-com", "key": "registry.example.com/example.json" }, "containerDefinitions": [ { … php app container defined here … "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] }, { "cpu": 1000, "entryPoint": [], "environment": [ { "name": "CONSUL_JOIN", "value": "consul.example.com" }, { […]
有没有办法强制OpenSSH(或创build某种types的代理)转发一个用户到一台机器和另一个用户到另一台机器只是由他(她)提供的用户名? 我遇到了以下问题:我要在Docker容器中运行GitLab,同时在主机上运行SSH服务器。 GitLab侦听SSH连接,但是它只对使用SSH密钥的“git”用户识别客户端感兴趣。 所以我想创build的设置是以下任一个: 在主机上的端口22上的代理,当提供的用户是“git”或主机SSH(可能监听另一个端口,重要的是客户端不知道这一点)时,将整个会话转发到Docker Gitlab。不同。 主机SSH处理除“git”之外的所有用户,并在用户名为“git”时将会话转发到Docker容器。 只是要清楚:Docker容器运行一个网桥,它可以从主机通过与主机IP不同的唯一IP地址访问。 在StackOverflow上有一个类似的问题( https://stackoverflow.com/questions/8505445/setup-ssh-server-to-forward-connections ),但没有解决这个问题的答案 – 最有帮助的是那个build议自定义shell,但我没有办法创build类似的东西。
我使用Activemq作为代理,客户端是Paho js发送websocket请求(ws协议)。 一切工作正常在服务器上,但是当服务器开始将nginx设置为代理时,客户端无法连接到服务器(但我可以连接到Activemq UI Web)。 我的nginx设置是: map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 16614; server_name mq.mysite.com; access_log /var/log/docker/nginx/access_activemq.log activemq_custom; location / { proxy_pass http://192.168.10.13:16614; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } 我正在使用80端口来侦听ActiveMQ的webUI和16614到ws协议。 有什么缺失的步骤?
我有一个docker内部DNS的问题。 在docker集装箱的DNS服务器之一是如此之慢,超时大部分的查询。 Docker安装在KVM虚拟机中,我有几个容器用docker-compose生成。 默认的dockerconfiguration。 查询外部DNS工作正常,但一段时间后(分钟,有时几小时)后,容器启动“ping google.com”有时工作速度快,有时返回与主机未发现错误(即使在以前的成功运行)。 或者需要很多秒才能find一个域的IP。 我把虚拟机移动到另一台服务器上,改变了网卡configuration,甚至改变了它的操作系统(Debian – > Ubuntu),但是这并没有解决我的问题。 只有一个容器受到影响(可能是最大数量的DNS查询)。 我还应该做什么? 如何debugging问题?