我有以下Dockerrun.aws.json : { "AWSEBDockerrunVersion": "1", "Authentication": { "Bucket": "bucket-of-another-aws-account", "Key": "docker/.dockercfg" }, "Image": { "Name": "docker-image" }, "Ports": [ { "ContainerPort": "8080" } ] } 带有我们的Docker容器的Elastic Beanstalk环境在客户的AWS账户中运行,并且具有.dockercfg的S3存储桶属于我们的AWS账户。 出于testing的目的,我把桶策略原则设置为*以便任何人都可以下载.dockercfg文件。 尽pipe如此,Elastic Beanstalk无法下载该文件(“ Failed to download authentication credentials docker/.dockercfg from bucket-of-another-aws-account ”)。 下一个testing是将文件移动到客户的AWS账户中的S3存储桶。 这工作。 问题是:是否有可能在Dockerrun.aws.json使用另一个账户? 我在文档中找不到任何提示,我不想将DockerHub API密钥提供给我们的客户。
我正在尝试将基于虚拟机的基础架构迁移到基于Docker的基础架构,并借此机会向此基础架构添加行为testing。 所以我的目标是对代码中的基本系统configuration(例如在一个Dockerfile中),git版本和(在一个理想的世界中)所做的所有改变都应该具有可testing的效果。 我想要做的testing示例: 如果我在“postgres”容器中添加用户帐户和权限规则,则用户“x”应该只能从“web”容器访问(仅)数据库“y”。 如果我在这里更改后缀configuration(如插入更改) ,则人类用户必须进行身份validation,但系统用户可以未经身份validation发送电子邮件。 如果我在这里更改了插入更改的Apacheconfiguration,则平均响应时间低于x毫秒。 我不想testing的东西(如果可以的话,也不会伤害): 文件x应该存在。 服务y应该被安装。 我想知道做什么是一种很好的/通用的方法来进行基础设施testing,如上所述,并且很乐意接受任何build议或听取最佳实践。 (我发现了serverspec ,但是在我看来,这样做似乎支持第二种testing;在所有的例子中,我读的是它比系统行为更倾向于检查系统状态。
我是Docker的新手,并试图评估在CentOS主机和容器上进行备份的方法和stream程。 从阅读大量关于Docker备份的文章,我得出以下结论: 没有人对Docker卷进行块级备份,只有文件级别的备份。 备份过程可以从主机或备份容器运行,但是如果从容器运行无法访问底层设备(按容器的定义)。 我完全理解第二点,但是(或为什么)不可能从卷获得一致的块级备份? 我认为LVM支持的卷可以从主机快照并适当备份。
我已经看过了构build命令,push命令和各种registryAPI调用 ,但是没有一个具有应用描述的function。 描述似乎是从远程API隐含的 : (从文档) 示例请求: GET /images/search?term=sshd HTTP/1.1 响应示例: HTTP/1.1 200 OK Content-Type: application/json [ { "description": "", "is_official": false, "is_automated": false, "name": "wma55/u1210sshd", "star_count": 0 }, { "description": "", "is_official": false, "is_automated": false, "name": "jdswinbank/sshd", "star_count": 0 }, { "description": "", "is_official": false, "is_automated": false, "name": "vgauthier/sshd", "star_count": 0 } … ] 我找不到有关如何在任何地方设置它们的文档。 […]
我想使Monit的“检查过程”有条件地基于envvariables工作。 这里是我想达到的伪代码(不是一个有效的监视configuration语法): [ -n "$run_foo" ] && check process foo …. 我的用例:我有一个docker镜像,像这样开始监视进程: CMD ["/bin/monit", "-c","/config/monit.conf"] Monit然后启动各种守护进程。 现在,我希望能够在运行时告诉哪些守护进程我想从这个映像创build的特定容器中启动,如下所示: docker run –env="run_foo=1;run_bar=1" … 我知道monit unmonitor和类似的args,但是我相信它们不符合我的目的。 想到这样的事情: start program="/bin/bash -c '[ -n \"$run_foo\" ] && /bin/foo .." 但是,似乎会导致监控不断尝试启动和监控不应该开始的事情。 我意识到使用不同的监视器configuration文件或使用不同的泊坞窗图像的可能性 – 这些不符合答案。 其他想法赞赏。
假设我已经在Docker Hub上注册了一个叫做MyRepo的回购站。 假设我正在使用名为MyImage的Docker镜像。 假设我已经configuration了Docker Hub来从我的GitHub仓库中的Dockerfiles构build镜像。 问题:(我通常使用docker运行速记而不是拉,创build和启动。)一旦我从Docker Hub中取出图像,docker总是使用本地保存的图像来创build容器。 问题:有没有办法将Dockerconfiguration为在Docker Hub上始终检查图像的较新版本,并在创build容器之前(如果适用)进行检查?
我是新的使用Amazon ECS,我想知道如何设置服务,以便容易地扩大/缩小一个容器。 这是我的项目架构: 网站:容器与网站,只提供html页面和javascript / css /图像。 听80。 api:在NodeJS中开发的API服务json的容器。 听443。 rabbitmq:容器与rabbitmq。 api容器被链接到它。 worker:等待来自rabbitmq(也链接到它)的命令并处理它们的容器,然后将答案发送回rabbitmq。 现在,我只用我的所有容器创build了一个任务定义,而在我的集群中,我只有一个服务。 我也有API的负载平衡器(所以我可以从网站通过DNS名称访问它)。 它工作的很好 ,但是我希望能够发起更多的工作,而不需要启动其他任何东西,而且现在我似乎也无法做到这一点(纠正我,如果我错了)。 所以我有几个问题: 我是否需要创build单独的任务定义? 我是否需要创build单独的服务? 如果我为每个容器创build一个任务定义(因此前面有网站 ,带有API ,带有rabbitmq的 代理和带有worker的worker ),我仍然可以将容器链接在一起,即使它们不在同一个任务定义中。 这是我目前的任务定义: { "taskDefinitionArn": "arn:aws:ecs:ap-southeast-2:347930943102:task-definition/Flipendo:4", "revision": 4, "containerDefinitions": [ { "volumesFrom": [], "portMappings": [], "command": [], "environment": [ ], "essential": true, "entryPoint": [], "links": [ "rabbitmq" ], "mountPoints": [], "memory": 2048, […]
我有两组服务器,运行Docker回购(F22服务器)的开发服务器和less量运行在Hyper-V中的less量生产服务器(F22云/primefaces)。 我为UniFi无线控制器构build了一个映像,可以在开发服务器上正常工作(但是运行良好),但是当试图在云/primefaces虚拟机上运行时,内存使用量将只会达到150MB(应该是300MB),而mongoDB不会在容器内部开始(使用docker顶部)。 我已经validation图像ID和时间戳是完全一样的,并且运行命令是相同的。 我甚至尝试在生产虚拟机上运行–net = host和–privileged = true,而不是公开端口,并且mongoDB不会启动。 Docker日志什么都不产生,并且附加的terminal也是沉默的。 另外,两台“机器”都在运行Docker 1.6。 Docker设置是默认的,除了在开发服务器上添加对本地FQDN的隐式信任。 云/primefaces主机将运行除此之外的所有其他容器。
目前使用Amazon Web服务,我成功地在Elastic Beanstalk(具有绿色群集运行状况)上将多个应用程序部署为Docker容器。 但是,当我尝试使用控制台获取日志时出现问题; 当我做“请求日志”时,没有发现日志。 当我在请求日志后返回仪表板时,出现了一个新的事件/错误: [Instance:i-123456789]命令在实例上失败。 返回码:1输出:bundleLogs.py –conf-path'/opt/elasticbeanstalk/tasks/bundlelogs.d/*'–location-prefix'resources / environments / logs / bundle /'无法执行任何方法publish_contents_from_filename的目标对象。 有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。 试图解决这个问题,我SSH进入我的集群,并使用下面的命令来find我的Docker容器中的日志: sudo docker exec myinstance cat /var/log/logstash_activity.log 我的日志按预期发现。 试着更多地了解这个错误,我查看了/var/log/eb-activity.log并find了以下几行: [2015-07-06T12:54:30.137Z] INFO [26993] – [CMD-BundleLogs] : Starting activity… [2015-07-06T12:54:30.363Z] INFO [26993] – [CMD-BundleLogs/AddonsBefore] : Starting activity… [2015-07-06T12:54:30.363Z] INFO [26993] – [CMD-BundleLogs/AddonsBefore] : Completed activity. [2015-07-06T12:54:30.363Z] INFO [26993] – […]
任务:nginx使用dynamic查找和caching为反向代理configuration泊坞窗容器。 处理stream程: 检查caching。 如果上游发现 – 代理 如果找不到 – 请求它,caching和代理 如果发现但caching无效 – 清除caching并再次运行 当前configuration(模板): server { listen *; server_name {{host}}; set $attempt 0; location / { try_files '/dev/null' @run; } location @run { internal; set $container_name "{{container_name}}"; set $upstream ""; rewrite_by_lua ' local attempt = tonumber(ngx.var.attempt) if attempt > 1 then ngx.log(ngx.ALERT, "Upstream down") ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end […]