Tag: amazon web services

如何从AWS ECR容器registry中删除未标记的图像

将图像推送到Amazon ECR时,如果标记已存在于回购站中,则旧图像保留在registry中,但处于未标记状态。 所以,如果我docker推image/haha:1.0.0第二次我做到这一点(提供的东西改变)第一个图像从AWS ECR untagged。 有没有办法安全地清理未标记图像的所有registry?

AWS Beanstalk和Docker端口=这是什么样的tomfoolery?

所以我有一个docker应用程序在端口9000上运行,我希望只通过https访问,而不是http,但我似乎没有任何意识到如何处理端口。 总之,我只想暴露端口443而不是80(在负载平衡器层和实例层),但一直没有能够做到这一点。 所以我的Dockerfile有: EXPOSE 9000 和我的Dockerrun.aws.json有: { "AWSEBDockerrunVersion": "1", "Ports": [{ "ContainerPort": "9000" }] } 而我似乎无法通过9000端口访问,而只能访问80端口。 当我ssh进入docker容器正在运行的实例,并用netstat查找端口时,我得到端口80和22以及其他一些udp端口,但没有端口9000.亚马逊如何pipe理这个? 更重要的是用户如何获得预期的行为? 用ssl和https尝试这个也会产生同样的结果。 证书已设置并映射到端口443,我甚至在.ebextensionsconfiguration文件中创build了一个案例来打开实例上的端口443,但仍然没有ssl sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: {Ref : AWSEBSecurityGroup} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0 我可以使SSL工作的唯一方法是让负载均衡器使用端口443(SSL)转发到实例端口80(非HTTPS),但这是荒谬的。 我究竟如何打开实例上的ssl端口并将docker设置为使用给定的端口? 有没有人做过这个成功? 我会很感激这方面的帮助 – 我已经梳理了文档,并得到了这一点,但这只是简单的困惑我。 总之,我只想暴露端口443而不是80(在负载平衡器层和实例层),但一直没有能够做到这一点。 祝你有美好的一天 干杯

如何在Elastic Beanstalk上部署定制的Docker镜像?

看这个博客 – 5.创buildDockerfile 。 看来我不得不在Docker.io上创build一个指向我的私有镜像的新Dockerfile。 而且由于最后的命令应该是启动一个可执行文件,或者docker映像最终会在涅,,最后是监视器: FROM flux7/wp-site # This is the location of our docker container. RUN apt-get install supervisor RUN mkdir -p /var/log/supervisor ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf EXPOSE 80 CMD supervisord -c /etc/supervisor/conf.d/supervisord.conf 这对我来说有点困惑,因为我有一个完全testing的自定义Docker镜像,以supervisord结尾,如下所示: FROM ubuntu:14.04.2 RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get -y update && apt-get upgrade -y RUN apt-get […]

如何使不同的aws实例中的docker安装Hazelcast节点相互交互?

我有三台机器,我已经安装了三个docker容器,在其上安装了hazelcast-3.5.4(ubuntu)。configuration了awsconfiguration,就像我通常使用Hazelcast(没有docker)那样。节点之间没有发现对方。 如何让他们互动或发现彼此? Hazelcast.xml文件如下所示: <join> <multicast enabled="false"> <multicast-group>224.2.2.3</multicast-group> <multicast-port>54327</multicast-port> </multicast> <tcp-ip enabled="false"> <interface>127.0.0.1</interface> <member-list> <member>127.0.0.1</member> </member-list> </tcp-ip> <aws enabled="true"> <access-key>Some_key</access-key> <secret-key>Secret_key</secret-key> <!–optional, default is us-east-1 –> <region>us-east-1</region> <!–optional, default is ec2.amazonaws.com. If set, region shouldn't be set as it will override this property –> <host-header>ec2.amazonaws.com</host-header> <!– optional, only instances belonging to this group will be discovered, […]

如何在最新的Amazon Linux AMI中升级Docker

我在Opsworks中使用Amazon linux AMI,Amazon Linux AMI是最新的(OS Amazon Linux 2017.03)。 问题是这个AMI带有docker版本17.03.2-ce ,但是我需要安装版本17.05或更高版本(因为我想修改docker swarm中的 “ingress”networking,只有在最新的docker版本中才有可能)。 看起来亚马逊直到17.03才正式支持版本 。 如果我尝试从centos rpm / repository手动升级docker,我得到以下错误(可能是因为我在Redhat的风格和docker目前似乎不支持): –> Finished Dependency Resolution Error: Package: docker-ce-17.06.1.ce-1.el7.centos.x86_64 (docker-ce-stable) Requires: libsystemd.so.0(LIBSYSTEMD_209)(64bit) Error: Package: docker-ce-17.06.1.ce-1.el7.centos.x86_64 (docker-ce-stable) Requires: systemd-units Error: Package: docker-ce-17.06.1.ce-1.el7.centos.x86_64 (docker-ce-stable) Requires: libsystemd.so.0()(64bit) Error: Package: docker-ce-17.06.1.ce-1.el7.centos.x86_64 (docker-ce-stable) Requires: container-selinux >= 2.9 You could try using –skip-broken to work […]

使用随机主机端口将ELB注册到ECS服务

我正在使用AWS上的ECS服务,我有这个问题 – 我需要在ECS上运行的docker容器是web服务,每个容器应该有其内部端口80映射到容器主机上的随机端口。 我不想事先指定80容器端口的主机端口,我想让docker守护程序find容器的主机端口。 但是,ELB如何适合这里呢? 对我来说,看起来我必须知道主机端口能够为服务创buildELB。 是这样吗?

结合salt,docker和Amazon EC2来托pipePython应用程序

我们目前在我们公司的情况是: 3个python应用程序可以根据需要多次生成 托pipe所有这些应用程序的单个Amazon EC2服务器(每个应用程序有1个实例) CPU利用率〜30% 我们希望在1小时内完成的定期工作需要2小时(我们的应用程序的单个实例不能工作得更快 – 原因在这里不重要 – 但产生的第二个实例是诀窍) 我们希望使用docker,salt和Amazon EC2找出可自动扩展的解决scheme。 由于我没有pipe理员背景很难评估我们提出的哪些可能的解决scheme是好的,哪些是坏的。 所以我决定问你使用上述技术的经验,也许你将能够指出以下解决scheme的可能的问题: 我们有照顾单个ec2服务器的盐。 它正在安装所有应用程序依赖项,并使用最新的应用程序版本创buildAMI映像。 然后,我们正在使用Amazon自动扩展服务在需要时产生新的AMI。 优点: 这很简单 它很灵活 处理硬件故障相当好 缺点: 这不符合成本效益 我们没有使用所有资源 我们在EC2服务器实例上部署了固定数量的应用程序(由docker容器包装),例如,我们总是在服务器L4.medium上运行3x应用程序A. 当我们需要更多的应用程序实例时,亚马逊自动缩放会产生新的EC2服务器,而salt正在处理这个问题,我们将有3个Docker容器,在那里运行应用程序A. 优点: 我们可以使用任何我们想要的EC2服务器 我们可以使用特定服务器上的所有可用资源 缺点: 缩放的细微程度:如果四个应用程序A实例在1小时20分钟内完成工作,并且我们的目标是1小时,则会产生接下来的4个实例,然后在40分钟内完成工作(不必要的快)。 我们有任何我们想要的服务器和扩展意味着添加新的EC2实例或新的docker容器到现有的EC2实例。 换句话说,我们正在将新的Docker容器添加到现有机器,除非亚马逊自动缩放增加了新的ec2实例。 这在理论上是我们find的最好的解决scheme,但问题是我不知道是否可以用盐来实现。 优点: 灵活 成本效益 很酷:) 缺点: 最复杂的解决scheme 缩小问题(我们在3个服务器上有6个应用程序A实例,现在我们只需要2个,所以我们从2个服务器中删除了4个实例,但是可能会有不同的应用程序阻止我们停止ec2,因此我们再次使用了未使用的资源) 我甚至不知道从哪里开始 这就是我们所有:)任何build议将不胜感激。 任何不同于这三者的解决scheme都是非常受欢迎的(尤其是那些已经在生产中运行的)。

docker私人registry:ping尝试失败

我试图设置我的私人Dockerregistry,我正在遵循官方文档 。 我已经安装了Docker,并且能够在我的服务器上运行我的registry。 但是我希望我的registry能够被广泛使用。 我的docker服务器与私人registry安装在AWS实例。 我使用keytool创build了自己的证书和密钥: docker run -d -p 5000:5000 –restart=always –name registry \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2 我能够ping通这个实例: ping ec2-xx-xx-xx-xx.xx-west/east-1.compute.amazonaws.com 但推动是不可能的: The push refers to a repository [ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/ubuntu] (len: 1) unable to ping registry endpoint https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v0/ v2 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v2/: dial tcp 10.xxx:5000: […]

在EC2上的Docker,dockerfile中的RUN命令不能读取环境variables

我在AWS上有两个弹性beanstalk环境:开发和生产。 我在每个实例上运行一个glassfish服务器,并且要求在生产和开发环境中可以部署相同的应用程序包,而不需要两个不同的.EAR文件。这两个实例大小不同:dev有一个微型实例生产有一个中等的实例,因此我需要为glassfish部署两个不同的configuration文件,每个环境一个。 主要的问题是该文件必须在服务器启动之前在glassfish config目录中,因此我认为在创build容器时可以更好地移动它。 当然,每个环境都使用docker容器来托pipeglassfish实例,所以我首先想到的是为elastic-beanstalkconfiguration一个环境variables。 在这种情况下 ypenvironment = dev 为开发环境和 ypenvironment = pro 为生产环境。 然后在我的DOCKERFILE中,我把这个语句放在RUN命令中: RUN if [ "$ypenvironment"="pro" ] ; then \ mv –force /var/app/GF_domain.xml /usr/local/glassfish/glassfish/domains/domain1/config/domain.xml ; \ elif [ "$ypenvironment"="dev" ] ; then \ mv –force /var/app/GF_domain.xml.dev /usr/local/glassfish/glassfish/domains/domain1/config/domain.xml ; \ fi 不幸的是,当启动完成后,两个GF_domain文件仍然在var/app 。 然后我发现RUN命令在容器满载之前运行了一些东西,可能缺less弹性beanstalk注入的variables。 所以我试图将代码移动到ENTRYPOINT指令。 再次运气,容器启动失败。 也试过了 ENTRYPOINT ["command", "param"] 语法,但它没有工作给一个 System error: […]

如何清理docker覆盖目录?

我通过CoreOS和AWS的ECS运行docker。 我有一个失败的图像,重新启动了很多次,容器仍然在 – 他们填补了我的驱动器分区。 具体来说, /var/lib/docker/overlay/包含大量文件/目录。 我知道docker-cleanup-volumes是一件事情,但它清除/ volumes目录,而不是/ overlay目录。 docker ps -a在我的不好的docker集装箱上显示超过250次启动尝试。 但是他们没有跑步。 除了rm -rf /var/lib/docker/overlay/* ,我该如何清理呢?