Tag: amazon ec2

设置安全jenkins与docker的主人

我想用docker在ec2上build立一个安全的Jenkins主服务器。 我从这里使用标准jenkinsdocker文件: https ://registry.hub.docker.com/_/jenkins/ 默认情况下,它会打开一个不安全的8080 http端口。 不过,我希望它使用https的标准443端口(首先我想使用自签名SSL证书)。 我在这个主题上进行了一些研究,并find了几个可能的解决scheme。 我并不是真正有经验的docker工人,所以我仍然找不到一个我可以使用或实现的简单的。 以下是我find的一些选项: 在8080上使用标准的jenkins docker,但是在我的ec2实例上configuration一个安全的apache或者nginx服务器,这个服务器会redirect这个trafic。 我不喜欢这个,因为服务器将在docker之外,所以我不能保持它在版本控制 以某种方式修改jenkins docker文件,根据https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkinsconfigurationhttps来启动jenkins。 我不知道该怎么做。 我是否需要创build自己的docker集装箱? 使用像这样一个安全的nginx的docker文件https://registry.hub.docker.com/u/marvambass/nginx-ssl-secure/并以某种方式结合两个docker集装箱或使他们沟通? 不知道该怎么做。 有人可以请推荐我最好的解决scheme吗? PS我不知道ec2会给我带来多less麻烦,但是我认为它只是在安全小组中开放443。

datadog代理无法从docker容器内访问

我在Amazon linux ec2上安装了dd-agent。 如果我直接在主机上运行我的python脚本(我使用了名为“dogstatsd-python”的SDK),所有的指标都可以发送到datadog(我login到datadoghq.com并看到了指标)。 该脚本是这样的: from statsd import statsd statsd.connect('localhost', 8125) statsd.increment('mymetrics') 但是,我启动了一个docker容器并从容器中运行相同的脚本: from statsd import statsd statsd.connect('172.14.0.1', 8125) statsd.increment('my metrics') '172.14.0.1'是用命令提取的主机的IP地址 netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}' 没有度量标准被发送到datadog ….. 我猜测,也许这是由于一些configuration问题,如“地址绑定”。 也许我在主机上安装的dd-agent只能从“localhost”接收指标。 希望有人能帮助我。 先谢谢你。

如何设置自动缩放RabbitMQ Cluster AWS

我试图从SQS转移到RabbitMQ的消息服务。 我期待构build一个稳定的高可用性排队服务。 现在我正在与群集。 目前的实现 ,我有三个与RabbitMQ与pipe理插件安装在一个AMI的EC2机器,然后我明确地去每个机器和添加 sudo rabbitmqctl join_cluster rabbit@<hostnameOfParentMachine> HA属性设置为全部,同步工作。 而负载均衡器上面分配了一个DNS。 到目前为止这个东西的作品 预期实现 :创build一个自动调节群集环境,其中上/下行的机器必须dynamic地join/移除群集。 达到这个目标的最好方法是什么? 请帮忙。

弹性beanstalk泊坞窗应用程序不部署时更新

我有一个Dockerfile / elastic-beanstalk应用程序,它从s3中提取当前应用程序版本的tarball并启动它。 这在我第一次部署时效果很好; Docker容器被构build,应用程序启动并正确运行。 问题出在我对应用程序进行更改之后,重新将tarball上传到s3并运行eb deploy 。 $ eb deploy INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: Successfully built aws_beanstalk/staging-app INFO: Successfully pulled yadayada/blahblah:latest INFO: Docker container 06608fa37b2c is running aws_beanstalk/current-app. INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully. 但该应用程序尚未更新*.elasticbeanstalk.com 。 我猜,因为Dockerfile没有改变,docker不重build容器(并拉动最新的应用程序tarball)。 […]

如何在Elastic Beanstalk应用程序中的Docker容器之间共享卷?

我试图在多容器 AWS EC2实例中运行的两个Docker容器之间共享数据。 通常,当我运行容器时,我将指定卷作为命令标志,即: docker run -p 80:80 -p 443:443 –link Widget:Widget –volumes-from Widget –name Nginx1 -d nginx1从Widget共享一个卷到Nginx1。 但是,由于Elastic Beanstalk要求您在dockerrun.aws.json文件中指定Dockerconfiguration,然后在内部处理运行Docker容器,所以我一直无法弄清楚如何在容器之间共享数据卷。 请注意,我没有试图将数据从EC2实例分享到Docker容器中 – 这部分似乎工作正常; 相反,我想直接从一个Docker容器共享数据到另一个。 我知道docker容器卷与主机在"/var/lib/docker/volumes/fac362…80535"等共享,但由于这个位置不是静态的,我不知道我将如何引用它在dockerrun.aws.json文件。 有没有人find解决scheme或解决方法? dockerrun.aws.json和configurationEB在这里寻找更多信息: http : dockerrun.aws.json 谢谢!

是否有可能使用Winscp连接到正在运行的Docker容器?

我能够连接到运行docker系统的主机。 但我无法find如何直接连接到docker。 有谁知道我需要调整WinSCP添加到连接? 当然,我可以通过腻子打开,但我想通过WinSCP连接。

在AWS beanstalk下将特定的EBS卷挂载到Docker

AWS Beanstalk可以从Docker容器运行应用程序。 如文档( http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html )中所述,可以在Dockerrun.aws.json中将目录映射写入EC2卷: "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } 但是,可以挂载特定的EBS卷吗? Fe我需要在Docker容器中运行db并使用Beanstalk进行部署。 很明显,我需要持续的数据,备份/恢复数据库等。

在Elastic Beanstalk上挂载Docker nfs4

我被困在一个Docker容器中,在Elastic Beanstalk上运行,访问一个nfs4共享。 Netshare在运行Docker容器的EC2实例上运行。 在实例上手动安装nfs共享,我可以毫无问题地访问EC2实例上的共享。 但是,当我运行一个容器,试图挂载nfs4卷时,这些文件不会出现在容器内。 我这样做 首先,启动Docker主机上的netshare守护进程: sudo ./docker-volume-netshare nfs INFO[0000] == docker-volume-netshare :: Version: 0.18 – Built: 2016-05-27T20:14:07-07:00 == INFO[0000] Starting NFS Version 4 :: options: '' 然后,在Docker主机上,启动Docker容器。 使用-v创build挂载nfs4共享的卷: sudo docker run –volume-driver=nfs -v ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates:/home/ec2-user/xxx -ti aws_beanstalk/current-app /bin/bash root@0a0c3de8a97e:/usr/src/app# 根据netshare守护进程,这有效: INFO[0353] Mounting NFS volume ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:/home/ec2-user/nfs-share/templates on /var/lib/docker-volumes/netshare/nfs/ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates 因此,我尝试在新启动的容器中列出/home/ec2-user/xxx的内容 – 但它是空的? root@0a0c3de8a97e:/usr/src/app# ls /home/ec2-user/xxx/ root@0a0c3de8a97e:/usr/src/app# […]

Docker Swarm – networking覆盖不能连接所有容器

我目前有3个EC2实例设置了Docker Swarm和Consul。 我有3个简单的节点应用程序遍布所有3个实例,然后nginx在我的swarm主机上进行路由。 使用覆盖networking指南,我创build了一个名为mynet的新覆盖mynet并将每个容器连接到此networking。 使用docker inspect我可以确认每个节点容器和nginx容器都连接到mynet并具有IP。 但是,在对我的nginx容器进行切换之后,它只能通过networking与位于同一主机上的节点应用程序通信,而不能与集群中其他主机上的节点应用程序进行通信。 在运行docker network inspect mynet ,只列出了两个容器(同一主机上的nginx和一个节点实例),而另外两个容器没有列出,即使它们具有该覆盖networking的名称和IP从docker inspect 。 这个想法是使用一个nginx反向代理来添加任何联机到它的configuration的新的容器,但我坚持让容器所有连接。 根据Dockernetworking文档覆盖这应该是可能的。 我究竟做错了什么? 谢谢。 编辑: 在发送垃圾邮件之后, docker network inspect mynet几次docker network inspect mynet ,看起来容器不断地与networking连接和断开连接,即使我已closures了所有的防火墙并打开了用于testing目的的端口。 什么会导致这样的事情?

在AWS EC2实例的dockerfile中运行git clone作为主机和私有git存储库时,主机validation失败错误

我正在使用AWS ec2实例作为私人git存储库。 这个实例也用于运行Dockerfile,Docker文件尝试从这个私有存储库检出代码。 我的基本设置完成按照https://alvinabad.wordpress.com/2013/03/23/how-to-specify-an-ssh-key-file-with-the-git-command/选项2.但是,当我运行我的docker生成命令: $ sudo docker build -t“spring-petclinic”。 构build脚本停在行: RUN /root/.ssh/git.sh -i /root/.ssh/.pem克隆ec2-user@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com:/ usr / local / git-回购/弹簧petclinic.git 并得到以下错误: “克隆到”spring-petclinic“…主机密钥validation失败致命:无法从远程存储库读取,请确保您拥有正确的访问权限并存在存储库。 我已经通过谷歌search这种types的错误,类似的设置,但无法search。 请帮忙!!! 谢谢