Tag: amazon web services

AWS ECS – Docker Container以代码0退出

我正在尝试使用AWS ECS启动我的Docker容器。 当我运行任务,我看到状态为待定,然后立即我看到我的任务状态是在停止。 但是,当我尝试通过SSH手动运行相同的docker容器到该框中,我能够启动容器。 我无法使用ECS代理获取我的docker集装箱。 我也尝试SSH到那个盒子里,看着所有的ECS日志,这是没有帮助的跟踪这个问题。 这是我一步一步做的 在本地创build我的docker集装箱和testing相同。 按照ECS的AWS入门文档,将正在运行的docker容器映像上传到AWS ECR。 为我的docker集装箱创build任务定义。 创build了一个集群configuration来运行我的任务 我运行了任务并select了任务应该运行的集群 我看到任务状态处于挂起状态,立即将状态更改为停止状态。 我不知道如何解决这个问题。 同样从AWS UI,我看到docker集装箱退出0退出。 这是我创build的任务定义 任务定义JSON { "requiresAttributes": [ { "value": null, "name": "com.amazonaws.ecs.capability.ecr-auth", "targetId": null, "targetType": null }, { "value": null, "name": "com.amazonaws.ecs.capability.task-iam-role", "targetId": null, "targetType": null } ], "taskDefinitionArn": "arn:aws:ecs:us-east-2:####################:taskdefinition/app1:3", "networkMode": "bridge", "status": "ACTIVE", "revision": 3, "taskRoleArn": "arn:aws:iam::##################################:role/EC2ContainerServiceFullAccess", "containerDefinitions": [ […]

使用AWS ECS docker容器,可以将所有三个必需的Zookeeper端口映射到主机? (似乎没有)

每个Zookeeper实例(每个Docker容器一个)需要三个不同用途的端口(端口2181,2888,3888)。 通过这些端口,这些Zookeeper实例(通常是其中的3到5个)的集群相互通信以确定领导者,追随者(等等)。 从我今天的工作(在AWS上)看来, AWS ECS docker containers似乎不能将多个端口映射到容器主机; 所以我怀疑这是无法完成的 – 至less不是没有麻烦,这消除了在这种情况下使用ECS的简单优势。 它是否正确?

了解AWS ECS代理和Docker容器

问这些问题我可能会很傻。 但是我想了解AWS ECS代理在EC2实例中扮演什么与Docker容器进行交互。 这是我的情况 我有2个Docker容器在AWS EC2 linux实例中运行。 我可以使用来自EC2实例的泊坞窗容器IP地址来访问在泊坞窗容器中部署的应用程序的url。 在这种情况下,我做了curl http://172.18.0.1:8080/app1/ 从ECS文档中,我看到我们可以使用ECS实例选项卡中显示的公共IP访问Docker容器内的站点。 我的问题是,当我使用端口号打到公共IP时,ECS如何知道与docker集装箱通话。 任何人都可以帮助我理解这一点吗?

如何将多个日志stream从ecs上的单个容器logging到不同的cloudwatch日志stream中

AWS ECS中的任务定义支持指定日志驱动程序。 aws日志驱动程序允许指定日志组,区域和stream的前缀。 当来自不同容器的日志被发送到指定的日志组中的不同stream时,这可以很好地工作。 应该怎么做,从单个容器logging多个日志到单独的日志stream? 例如,要将nginx docker的访问日志和错误日志传递到独立的cloudwatch日志stream/日志组。

在docker容器中的phpfpm和nginx之间共享应用程序文件

我试图部署简单的phpinfo.php到ECS(亚马逊EC2容器服务)。 我被告知,如果我Dockerize我的应用程序,并将结果图像到Amazon ECR(弹性容器registry),EC2可以轻松地从那里获得应用程序。 我做到了,现在我又打了另一个路障。 在EC2容器中部署之后, 问题是我的应用程序只在/ var / www / html /文件夹中的phpfpm容器中,但是IT在我的nginx容器中不可见。 由于这个问题,nginx不能传递我的应用程序。 请注意,应用程序不在主机设备EC2中,也不在nginx中,仅在php-fpm中。 如何解决这个问题呢? 请指教。 谢谢 泊坞窗,compose.yml version: '2' services: nginx: image: 607167.dkr.ecr.ap-southeast-1.amazonaws.com/nginx:1 cpu_shares: 50 mem_limit: 134217728 ports: – "80:80" links: – phpfpm phpfpm: image: 60547.dkr.ecr.ap-southeast-1.amazonaws.com/phpinfo:latest cpu_shares: 50 mem_limit: 134217728 ports: – "9000:9000" – "3306:3306" 我试着将这一行添加到这两个容器中的XML文件,但然后我的容器加载失败。 volumes: – .:/var/www/html 请帮忙。 谢谢

涉及ECS和自定义Java应用程序的假设

请原谅这个post,如果它运行很长或没有多大意义,我不是一个开发人员(希望是有一天,还在学习),我也不是那个熟悉AWS的人。 问题:在我的营业场所,我们启动了EC2,然后我们的团队立即将RDPjoin其中,并安装各种定制软件。 作为我们公司hackathon的一部分,我正试图减less依赖性,并简化/自动化我提到的许多手动安装。 起初,我开始通过创buildC#命令行程序来解决问题,并成功。 该程序自动安装任何额外的软件,并为FTP客户端生成configuration文件。 我们还更新了我们旋转EC2的图像,以包含额外的依赖项(ruby,.net等)。 注意到每个EC2都需要ftp客户端的一组不同的configuration文件。 但是现在我已经意识到,这可能都是通过ecs / docker / lambda的组合自动完成的。 我试图完成的工作:当EC2启动时,ECS将parameter passing给EC2上的应用程序来configuration另一个应用程序(或者ECS可以在不需要另一个应用程序的情况下执行此操作),并安装自定义服务可能已经将服务作为映像的一部分安装,然后触发它作为ECS的一部分启动?)。 我知道这是一个混乱的混乱,我知道XY的问题。 我只是想确保我在解决这个问题上迈出了正确的一步。 所以,如果我在这里离开赛道,可以随意指向正确的方向。 非常感谢!

Elastic Beanstalk在Docker-Compose上看不到公开的端口

我有一个凤凰应用程序,我试图推动AWS /弹性beanstalk。 现在我遵循这个指南,并确认Docker-compose和run命令在localhost https://github.com/dreamingechoes/docker-elixir-phoenix上工作 。 但是,我很难通过eb cli接口将项目部署到弹性beanstalk。 这是运行后得到的错误 eb create projectName ERROR: No EXPOSE directive found in Dockerfile, abort deployment ERROR: [Instance: i-0cabfeaad7423be93] Command failed on instance. Return code: 1 Output: No EXPOSE directive found in Dockerfile, abort deployment. 我的文件: Dockerfile: # Versions # # Erlang: 1:20.0 # Elixir: 1.5.0 # Phoenix: 1.3.0 FROM ubuntu:14.04 […]

在AWS上部署dockerized rails应用程序的最佳方法?

我dockerized现有的Rails应用程序,它正常运行开发。 我想将应用程序部署到生产环境。 我在本地使用了docker-compose。 应用程序堆栈如下所示: Rails应用程序 背景工人的邮件和清理 关系DB – postgres NoSQL DB – DynamoDB SQS队列 行动电缆 – Redis caching – Memcached 据我所知,部署选项如下: ECS(尝试这样做,但在将任务和任务定义与Docker组合概念相关的概念方面存在困难) ECS与Elastic Beanstalk 根据这个docker文档的Docker Machine: https : //docs.docker.com/machine/drivers/aws/ 我没有capistrano的经验,还没有在这个项目上使用它,所以我不打算将它用于docker部署。 我打算使用一些CD / CI解决scheme来轻松部署。 我需要关于可用选项的build议,以及如何以易于维护的方式部署堆栈,并以最less的部署工作推送更新?

由于“任务:非零退出(1)”错误,Docker容器无法启动

我正在尝试在Amazon AWS Docker实例上与pimcore实例一起设置nginx代理。 这是我的撰写文件: version: '3.4' services: nginx-proxy: image: codesuki/ecs-nginx-proxy ports: – "80:80" pimcore-jcii: image: ****/pimcore5:current ports: – "8000:80" links: – "db" volumes: – efs-storage:/data db: image: mariadb restart: always ports: – "3306:3306" volumes: efs-storage: driver: cloudstor:aws driver_opts: backing: shared 如果我部署这个堆栈,nginx代理容器不能启动。 它出现以下错误信息: task: non-zero exit (1) 我有“docker inspect”的错误信息。 我究竟做错了什么? 或者我可以在哪里收集有关集装箱状态的更多信息?

nslookup:isc_socket_bind:使用中的地址 – 无法parsingdocker容器中的dns(phusion image)

我正在运行一个带有2CPU,8GB Ram,450Mbps带宽的AWS实例,以及一个容纳python应用程序的docker容器。 在Python运行当天,容器的平均负载约为6.0,容器运行10个小时后,主机和容器仍然在运行,但是没有连接任何域,仍然可以通过IP地址连接。 还有主机DNS仍然工作正常。 这里是细节: `nslookup google.com` results: `nslookup: isc_socket_bind: address in use` 我知道运行在平均6.0以下的负载可能会导致很多问题,但在我的情况下,DNS问题会随着时间的推移而发生,因此我需要了解为什么在升级AWS实例之前。