Tag: amazon web services

无法连接到AWS EC2实例中的Docker PostgreSQL容器

Docker新手在这里。 我正在尝试在AWS EC2实例中为PostgreSQL创build一个Docker容器。 首先,为了实现持久性,我使用数据卷容器 。 这里是我用来为我的PostgreSQL数据库创build一个数据卷容器的命令: docker create -v /var/lib/postgresql/data –name postgres9.3.6-data busybox 然后我运行以下命令来创buildPostgreSQL容器: docker run –name postgres9.3.6 \ -p 5432:5432 \ -e POSTGRES_PASSWORD=password \ -e POSTGRES_USER=root \ -e POSTGRES_DB=db_name \ -d –volumes-from postgres9.3.6-data postgres:9.3.6 我在我的本地环境中运行它,然后尝试通过PostgreSQL桌面客户端连接到它,它工作。 我能够连接到存储在本地PostgreSQL泊坞窗容器中的db_name。 在此之后,我使用了AWS中的一个EC2实例。 并遵循上面描述的相同的stream程。 然后返回到PostgreSQL桌面客户端并尝试连接到它。 但是我收到以下错误信息: 拒绝连接。 检查主机名和端口是否正确,以及postmaster是否接受TCP / IP连接。 我在这里错过了什么? 编辑 我已经检查并将postgresql.conf文件中的listen_addresses设置为 listen_addresses='*' 并将以下行添加到pg_hba.conf文件中: host all all 0.0.0.0/0 md5

使用AWS Application Load Balancer的Websocket超时

在尝试使用Elastic Beanstalk环境中的应用程序负载均衡器专门为websockets使用端口时,会出现网关超时。 Web应用程序和websocket服务器被保存在一个Docker容器中,应用程序运行正常,但是wss://domain.com:8080只会超时。 这里是负载均衡器监听器,使用SSL证书的wss。 它指向的目标组是接受HTTP协议(我试过HTTPS),并转发到8080到EC2实例。 或者..应该是。 (似乎不是应用程序负载平衡器上的TCP选项)。 我查看了应用程序负载均衡器日志,它看起来像到达目标组,但超时了它与EC2实例的连接,并且我很难理解为什么。 所有AWS安全组目前已经在所有stream量上打开,我已经检查了主机,发现端口已打开并正在被Nginx监听,该端口将路由到正确的端口到docker容器: docker ps也给我看: 一旦进入容器,我可以看到Websocket服务器正在监听端口: 所以它不可能是EC2实例本身,可以吗? 在ALB中通过端口路由websockets是否存在问题? – 编辑 – ALB当前SG: EC2实例SG:

Docker容器在AWS VPC中,好主意还是不好?

我想知道这是否是一个好主意? 我有一个几个Java服务,现在在aws vpc不同的框中运行。 最近我读了Docker,觉得它真的很棒。 所以我的问题是,如果这是一个好主意,用泊坞箱replace这些当前的箱子,并把我的Java服务上面呢? 当然还是在vpc中。 我能够想象的最大好处是可以节省我们在testing集成和debugging等方面所花费的工作量。 但是我担心类似的事情 性能损失(如果有的话)? networkingconfiguration? 服务状态监控? 我真的是docker工人的新手,所以请指点一下你认为可能有用的任何资源。

在CoreOS上将私钥安全地分发给Docker

我们开始使用Docker / CoreOS作为我们的基础架构。 我们正在部署EC2。 CoreOS集群由一个自动扩展组pipe理,所以新主机进出。 另外,还有很多。 我试图find一种方法来向所有主机分发一个秘密(私有RSA密钥或对称密码的共享密钥),以便我可以使用它来安全地分发数据库凭证,某些服务的AWS访问密钥等。 我想服从“最小特权原则”。 具体来说,如果我在同一主机上运行的两个不同容器中有两个应用程序,则每个应用程序只能访问应用程序所需的机密。 例如,应用程序A可能有权访问MySQL凭据,应用程序B可能有权访问Dynamo的AWS Access密钥,但A不能访问Dynamo,B无法访问MySQL。 如果我在每个服务器上都有一个秘密,那么这不会很难。 我可以使用像Crypt这样的工具从etcd中读取encryption的configuration数据,然后使用卷映射来select性地将凭据提供给单个容器。 问题是,我怎么安全地把钥匙到主机上。 以下是我考虑的一些事情,以及为什么他们不工作: 使用AWSangular色为每个主机授予对encryptionS3存储桶的访问权限。 主机然后可以从那里读取一个共享的秘密。 但是这不起作用,因为S3有一个REST API,Docker不限制networking访问容器有,而且angular色适用于整个主机。 因此,该主机上的任何容器都可以读取S3中的密钥,然后读取etcd(其中也包含不受限制的REST API)中的所有值并对其进行解密。 在我的CloudFormation模板中,我可以有一个密钥的参数。 然后embedded到UserData中并分发给所有主机。 不幸的是,任何容器都可以通过元数据服务REST API检索密钥。 使用船队向全部主机提交全局单元,并且该单元复制密钥。 但是,容器可以通过它的REST API访问队列,并执行“fleetctl cat”来查看密钥。 把密钥放在一个私人回购的容器中。 然后,可以将其作为全局单元分发给所有主机,并且该容器中的应用程序可以将密钥复制到卷装载。 不过,我认为,鉴于私人回购证书,有人可以用标准的networking工具下载容器,并提取密钥(尽pipe有一些努力)。 然后,问题就变成了如何安全地分发.dockercfg和私人回购的凭据,我想我们马上就回到了开始的地方。 基本上,似乎核心问题是,每个东西都有一个REST API,我不知道有什么办法来阻止容器访问某些networking资源。 想法?

在AWS Elastic Beanstalk上运行Docker容器 – 我的web应用程序在哪里?

我使用Elastic Beanstalk控制台将应用程序从Docker容器部署到AWS Elastic Beanstalk。 完成在AWS Elastic Beanstalk上部署Web应用程序之后 – 环境状态为绿色。 我单击环境仪表板上的URL链接查看我的Web应用程序。 它总是导航到网页有string Congratulations! Your Docker Container is now running in Elastic Beanstalk on your own dedicated environment in the AWS Cloud 我读了日志文件,我没有看到任何错误。 这是它的链接: http : //dockstalker-env.elasticbeanstalk.com/我的网站应用程序在哪里? 我想念什么? Dockerfile FROM ubuntu:14.04 RUN apt-get update && apt-get upgrade -y RUN apt-get install -y git git-core wget zip nodejs […]

将Elastic Beanstalkconfiguration更改为Docker

我目前正在运行Elastic Beanstalk应用程序的Node JSconfiguration。 我想要将环境更改为Docker,而不必删除环境。 有谁知道我怎么能做到这一点? 有一个重build环境的行动,但我不知道这是否会让我改变configuration。 我没有任何东西上传到环境,所以我不担心文件或数据库被删除。 有任何想法吗? 编辑: 我的问题是,我有另一台服务器上的DNS指向我的弹性beanstalk域(domain.elasticbeanstalk.com)。 如果我删除应用程序,我可以得到这个名字吗?

在谷歌容器registry中使用Amazon ECS

当我尝试使用AWS ECS与私人谷歌容器registry我的任务总是在挂起状态。 根据AWS文档,我在容器定义中添加了envvariables ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA= {"https://eu.gcr.io": { "email": "not@val.id", "auth": "some hash" }} 但是我得到这个错误 "CannotPullContainerError: Error: image not found" 我的完整任务定义 { "requiresAttributes": [], "taskDefinitionArn": "arn:aws:ecs:eu-west-1:745964170259:task-definition/test:2", "status": "ACTIVE", "revision": 2, "containerDefinitions": [ { "volumesFrom": [], "memory": 128, "extraHosts": null, "dnsServers": null, "disableNetworking": null, "dnsSearchDomains": null, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], […]

在AWS中添加ECS实例 – 在哪里设置集群名称

我有一个群集“我的集群” 如果我尝试添加ECS实例,则不可用。 但是,如果我创build一个集群“默认”,那么我有一个实例可用。 我已经按照这里的build议删除了文件/var/lib/ecs/data/ecs_agent_data.json: 为什么我的ECS服务不能在我的ELB中注册EC2实例? 我在哪里可以更改我的实例/负载平衡器,以允许我在“my-cluster”中使用EC2实例,而不必使用“默认”集群?

使用boto3从Docker容器内部连接到DynamoDB Local

为了testing,我试图从docker内部运行我的python 3.4应用程序,并连接到一个DynamoDB Local实例。 我可以从主机本地访问DynamoDB,而不会出现问题。 但是,从Docker容器中打开时出现“连接拒绝错误”。 我已经尝试在容器中运行DynamoDB本地,并将其链接到应用程序的泊坞窗容器,并在主机上运行它。 一个猜测是有一些环境variables缺失,但我无法弄清楚。 我不帮助链接我的~/.aws目录作为一个卷。 以下是一些重现错误的testing代码: import boto3 print('creating dynamodb resource') dynamodb = boto3.resource( 'dynamodb', endpoint_url='http://localhost:8001', region_name='dummy_region', aws_access_key_id='dummy_access_key', aws_secret_access_key='dummy_secret_key', verify=False) print ('got resource:', dynamodb) print('adding table') result = dynamodb.create_table( TableName='foo', KeySchema=[ { 'AttributeName': 'from_email', 'KeyType': 'HASH' # Partition key }, { 'AttributeName': 'raw_id', 'KeyType': 'RANGE' # Sort key }, ], AttributeDefinitions=[ { […]

使用CloudFormation更新而不是replaceECS任务定义

在更新CloudFormation中的TaskDefinition时,文档会说会发生replace操作 – http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html 有没有办法让这是一个新的修订? 我应该使用家庭参数吗? 是否有一个TaskDefinition限制? 否则,我会得到大量的非活动定义。 ContainerDefinitions: – Name: container Essential: 'true' Image: image:tag PortMappings: – ContainerPort: 80 HostPort: 80 Protocol: 'tcp' TaskRoleArn: 'arn:aws:iam::role'