Tag: 基础设施

可靠的dockerpostgres卷

我正在做一些postgres部署docker,aws和a terraform 事情进展得相当顺利,我开始terraform的实例,与docker使用ansible提供的实例,启动我的postgres容器与ansible也附加一个ebs卷到我的实例,我打算用作主要的数据存储。 但我很困惑如何将音量附加到docker(而不是实例,因为我能够做到这一点使用terraform) 我想可能使用ansible或修改dockerfile,但似乎是答案的“ 音量 ”的文档是不是很清楚。 所以如果我有这样一个可靠的剧本: name: Start postgis docker_container: name: postgis image: "{{ ecr_url }}" network_mode: bridge exposed_ports: 5432 published_ports: 5432:5432 state: started 我将如何指定用于Postgres数据存储的ebs卷? resource "aws_volume_attachment" "ebs-volume-postgis-attach" { device_name = "/dev/xvdh" volume_id = "${aws_ebs_volume.ebs-volume-postgis.id}" instance_id = "${aws_instance.postgis.id}" } 这是用来附加ebs卷的代码,以防某人感兴趣 请问任何你需要的信息,所有的帮助是深深的折磨

备份+版本Docker容器通过添加卷和提交

我们即将“docker化”我们不那么大的基础设施。 这里的一个关键问题是整个备份/恢复工作stream程,这对于大多数企业甚至是私人用户来说都是至关重要的。 我知道docker的导出和保存function,它会生成一个正在运行的容器的tarball,这是一个整洁,因为它可以在不closures容器的情况下完成。 假设我们正在运行一个容器X,并且已经装载了一些卷: -v /home/user/dockerapp-X/data:/var/www/html -v /home/user/dockerapp-X/logs:/var/logs/app-x -v /home/user/dockerapp-X/config:/etc/app-x 这样做的最大好处是,如果我们更新app-X,我们只需要拉新图片并重新启动容器。 但是:这样,如果我们执行docker-export或save,这些目录将不会被备份。 所以要么我们可以用rsync,backula或其他方法来备份这些目录。 我想这应该是“非标准”的回拨方式。 但是当前版本的图像和数据之间没有保证也没有联系。 在虚拟机上,我们只需制作快照即可连接数据和应用程序。 所以问题是:使用当前的app-x版本创build一个Dockerfile并复制映像中的卷并将整个映像构build/推送到我们的私有仓库是最佳做法吗? 所以它看起来像这样: FROM repo/app-x COPY /home/user/dockerapp-X/data:/var/www/html COPY /home/user/dockerapp-X/logs:/var/logs/app-x COPY /home/user/dockerapp-X/config:/etc/app-x 然后 docker build -t repo/infra/app-x:backup-v1-22.10.2016 . docker push repo/infra/app-x:backup-v1-22.10.2016 这意味着在我们的仓库中有一个当前版本的应用程序的快照,图像包含卷的所有当前数据。 所以恢复将是: docker run –name=backup-restored repo/infra/app-x:backup-v1-22.10.2016 而且我们甚至可以在主机上重新安装数据文件夹: docker run –name=backup-restored \ -v /home/user/dockerapp-X/data:/var/www/html -v /home/user/dockerapp-X/logs:/var/logs/app-x -v /home/user/dockerapp-X/config:/etc/app-x repo/infra/app-x:backup-v1-22.10.2016 我的数据和我的应用程序是否有正确的数据和应用程序版本?

Docker Hub私人回购login。 更安全的方式?

我曾经看到过这样的文章,关于如何从私人回购协议中获得回报,以及“最好”的方式。 我所理解的是,如果我想自动化任何基础设施来从dockerhub中提取我的docker镜像,我需要: 有一个用户,我可以login。 将用户的信誉保存在一些将启动我的基础设施的应用程序(无论是EC2用户数据,适合的configuration文件还是某些API中的ENVvariables)。 当机器启动时,它使用该用户的凭证login并在机器上放置一个令牌。 一切都很好。 我想知道是否有任何function使用应用程序密钥/令牌,而不是需要将其绑定到用户。 如果我可以pipe理应用程序密钥以访问我的用户/组织的DockerHub帐户,似乎会更安全/方便。 然后,我可以抽出钥匙或更改我的密码,不用担心天空坠落。 像这样的东西是可用的,即将到来的,还是有我没有遇到的解决scheme吗? 谢谢!

在多容器Docker设置中运行Django迁移

允许Django应用程序的多个实例同时运行相同的数据库迁移是否安全? 场景描述 这是一个Django应用程序的多个实例在负载均衡器后面运行的设置。 当Docker容器的更新版本可用时,每个旧的Docker镜像将被replace为新版本。 如果存在新的Django迁移,则需要运行它们。 这导致我的问题是:允许多个容器同时运行迁移( python manage.py migrate )是安全的吗? 我有两个关于这个问题的答案的假设。 是的,这是安全的。 由于数据库级别locking,迁移不会发生冲突,最终一个迁移脚本将运行,另一个迁移脚本将报告没有迁移应用。 不,这不安全。 在尝试修改数据库时,两个迁移可能会相互冲突。