我试图在AWS上部署一个多容器docker Elastic Beanstalk集群,我的情况是; 我有7个docker集装箱,其中六个是Scala应用程序,每个在端口9000上监听HTTPstream量。 第一个容器是一个nginx代理容器,只是对其他容器进行proxy_pass 。 我所看到的是很奇怪的,我似乎无法知道以何种方式调整它 – 我的容器似乎开始正常,但不知何故,他们的启动不断被一些东西打断,所有的容器被告知重新启动。 这是罪魁祸首的样子。 ————————————- /var/log/containers/centralapp-core-867cf4f2655c-stdouterr.log ————————————- Play server process ID is 1 [[37minfo[0m] play – database [default] connected at jdbc:mysql://some-mysql-server/somedb-core?characterEncoding=UTF-8 [DEBUG] [09/23/2015 16:30:25.591] [main] [EventStream(akka://application)] logger log1-Logging$DefaultLogger started [DEBUG] [09/23/2015 16:30:25.593] [main] [EventStream(akka://application)] Default Loggers started ————————————- /var/log/containers/centralapp-push-play-697ba6e223db-stdouterr.log ————————————- Play server process ID is 1 [[37minfo[0m] play – […]
我做了不谨慎的事 docker run -v /:/mnt:ro someimage 它导致了一些docker工人(docker v1.7)的守护进程错误。 从那以后,我只能以宽容模式启动,并且有很多selinux错误。 最引人注目的是无法启动期刊服务。 我试图通过fixfiles relabel但没有成功。 既然它发生在Fedora 21上,我也试着升级到F22(全部在执行= 0),但升级后问题仍然存在。 现在不知道如何find解决这个问题的正确方法。
我想限制连接到正在运行的Docker容器。 我有一套iptables规则可以有效地做到这一点。 然而,规则集取决于在DOCKER链之前应用我自己的规则链。 基本上,我想要这个结果 Chain FORWARD (policy DROP) target prot opt source destination PRE_DOCKER all — 0.0.0.0/0 0.0.0.0/0 /* Insert before Docker's filtering to apply our own */ DOCKER all — 0.0.0.0/0 0.0.0.0/0 ACCEPT all — 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED ACCEPT all — 0.0.0.0/0 0.0.0.0/0 ACCEPT all — 0.0.0.0/0 0.0.0.0/0 Chain PRE_DOCKER (policy DROP) target […]
我在这里看到了一堆关于这个问题的问题,但是没有一个答案帮助我。 我不断从nginx得到一个502错误,所以我看看access.log,看到当服务器试图连接到unix:/var/run/php5-fpm.sock时,我不断收到错误111 unix:/var/run/php5-fpm.sock 我已经重新启动php5-fpm,并确保套接字实际上在那里,但我一直得到这个错误。 你们知道为什么吗? 我的nginx.conf user www-data www-data; worker_processes auto; error_log /var/log/nginx_error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; gzip on; gzip_disable "msie6"; access_log /var/logs/nginx/access.log; error_log /var/logs/nginx/access.log; server { listen 80 default_server; root […]
我试图在Docker实例中运行supervisord。 [supervisord] nodaemon=true [program:p1] command=p1 $P1_ENV autorestart=true … [program:p2] command=p2 $P2_ENV autorestart=unexpected … 我们希望能够在这个生产Docker实例中运行我们的p2集成testing(当前设置为P2_ENV=–tests将运行testing)。 这些testing依赖于p1运行。 我们还希望Docker实例在testing完成时退出,这需要supervisord退出。 有没有什么可以使supervisord正常退出所有进程,并退出时,进程2优雅地退出? 如果没有,是否有另一个supervisord风格的程序,将允许此function? 谢谢!
我一直在关注本教程,关于使用Docker容器开始使用Kubernetes,这是修改为使用docker-compose官方教程的变体。 我设法得到尽可能列出使用的节点 kubectl get nodes 但我只能这样做,如果我有一个SSH连接打开到另一个窗口中的容器,打开使用 docker-machine ssh docker-vm -L 8080:localhost:8080 这是相当混乱,我想能够在docker-compose.yml处理这个,但我不知道如何 我试过使用ports和expose选项在iml文件,但他们不工作。 当我尝试转发/暴露端口8080,并获得使用上述kubectl命令的节点,我得到以下错误: error: couldn't read version from server: Get http://localhost:8080/api: EOF 我从顶部的第一个链接使用了docker-compose.yml ,并做了以下修改: aipserver: ports: – "8080:8080" expose: – "8080" 我已经在docker-compose.yml中指定的所有容器上docker-compose.yml ,但问题仍然存在。 如何使用docker-compose.yml转发/公开端口在我的容器上,而不必使用指定的-L选项打开SSH连接。
我们通过Docker在自己的容器中运行一堆服务,并使用Docker Compose连接它们。 以前我们使用链接来引用其他主机,但问题是,如果一个容器重新启动,并获得一个新的IP地址,那么链接的节点将不知道这一点,将停止工作。 所以我们去创build一个networking并命名我们的主机,这工作正常。 然而,我们有一个模拟组件,我们用它来替代其他两个容器的testing。 我可以很容易地通过链接configuration,但我不知道如何做到这一点与networking。 原来是这样的: mm: extends: file: common-service.yml service: mm-container links: – mock:enet – mock:ff (其中mm是知道容器enet和ff的容器,在这个用于testing的组合文件中,我们将它们链接到mock容器。) 我试图添加这个而不是链接: extra_hosts: – "enet:mock" – "ff:mock" (其中enet和ff是模拟的主机名),但是当然这会将这些行按原样添加到/ etc / hosts,因此不会发生主机名parsing。 在Docker-land中有没有解决这个问题的方法,还是我们必须重写我们的嘲笑工具?
假设我有几个ElasticBeanstalk环境: productionMyApp stagingMyApp qaMyApp 每个环境都有类似的Dockerrun.aws.json(哪些卷应该链接到哪里),但是有不同的环境variables(例如什么是RDS数据库url,什么是RDS密码,mandril API密钥…) 我应该存储在自己的文件(qa-Dockerrun.aws.json,prod-Dockerrun.aws.json,…)中的每个环境的环境variables,并告诉eb deploy使用该文件(如果是的话,我该怎么做? ?) 要么 我应该设置环境与eb setenv POSTGRES_PASS=xyzsecretabc 文档,而不是将它们放在Dockerrun.aws.json 欢迎任何其他build议 我想避免让我的敏感信息存储在git当然 谢谢
我在共享卷上创build的文件的权限有问题(这不幸是一个常见问题)。 当我在linux(ubuntu)上运行以下内容时,创build的文件最终被root所拥有。 当我在OSX上运行这个文件时,文件最终被运行docker命令的用户所拥有。 cd mkdir temp-docker docker run –rm -v ~/temp-docker/:/root/temp ubuntu /bin/touch /root/temp/touched ls -la temp-docker/touched # rm -Rf temp-docker 从linux输出 -rw-r–r– 1 root root 0 Nov 24 09:48 temp-docker/touched 从osx输出 -rw-r–r– 1 MyUser staff 0B 24 Nov 09:48 temp-docker/touched 有没有办法轻松模仿OSX的行为? 或者,这是否正常工作,因为OSX是在引擎盖下使用vagrant和vboxsf,并没有办法在linux上轻松地重现这一点?
我使用这个cloud-config.yml在digitalocean创build了3个coreos机器: https ://gist.github.com/socketwiz/d6fe23d19180a1ad8b5a其中令牌被replace为我从中检索到的: $ curl -w "\n" "https://discovery.etcd.io/new?size=3" 到目前为止,一切运作良好。 我可以看到其他机器 $ curl -L http://<machine_ip>:2379/v2/keys/ 在他们中的每一个,并获取有效的数据,所以我怀疑我的防火墙设置是好的(但也许不)。 我的问题开始时,我设置docker集装箱。 首先我得到docker0的IP地址: $ ifconfig docker0 然后我设置docker集装箱: $ docker run -it alpine ash 一旦启动,我运行: $ apk update && apk add curl 然后我尝试使用从ifconfig获取的IP地址访问etcd: $ curl -L http://172.17.42.1:2379/v2/keys/ 但curl命令只是挂起,最终超时。 我怀疑我的cloud-config.yml在etcd2部分或iptablesconfiguration中有一些configuration错误,但是我对这一切还是有点新的,而且我一整天都在调整它,不能克服这个问题。 任何想法将不胜感激。