Tag: 数据库

Docker&PostgreSQL:在创build时不能创build数据库名称为“ – ”的数据库

我在Docker版本1.10.1中安装了Docker镜像中的PostgreSQL 9.4.6。 根据这个官方的形象: https : //github.com/docker-library/postgres/blob/443c7947d548b1c607e06f7a75ca475de7ff3284/9.4/Dockerfile正如这里所说,要创build初始数据库我添加我的SQL脚本“/ docker-entrypoint- initdb.d“。 https://hub.docker.com/_/postgres/现在遇到一些麻烦后,我发现当我添加查询来创build数据库的SQL脚本中的数据库名称具有“ – ”,他们只是导致容器崩溃(即容器在启动后立即退出)。 但是,在数据库名称中没有“ – ”的查询工作正常,容器也不会崩溃,我可以访问这些数据库。 例如,这个查询运行良好。 create database 1stName_2ndName with owner vagrant; 但是我单独尝试了这两个查询,并且两种情况都失败了 create database '1stName-2ndName' with owner vagrant; 要么 create database 1stName-2ndName with owner vagrant; 注意:考虑没有双引号的查询。 stream浪的用户已经创build并正常工作。 我有一个名字是1stName-2ndName的数据库。 有人能帮我弄清楚这个问题吗? 这是我在Stackoverflow上的第一个问题。 对不起,任何一种错误。

如何从已删除的Docker容器中恢复数据? 如何重新连接到数据?

比方说,我删除了一个PostgreSQL docker容器,它的数据只在这里: $ docker inspect postgres1 … "Source": "/var/lib/docker/volumes/4948af…./_data" "Destination": "/var/lib/postgresql/data" $ docker rm postgres1 如果没有引用卷的其他容器,即使文件仍位于/var/lib/docker/volumes/…某个位置,我也无法使用–volumes-from重新连接到此卷/var/lib/docker/volumes/… 这给我带来了两个问题: 如果我不知道目录的卷UUID, find数据的最佳方法是什么? 做ls /var/lib/docker/volumes/给我一百这样的f77c92… dirs f77c92… 使用find . -name "*postgres*" find . -name "*postgres*"我仍然得到像这样的数十个结果… 10e0dc / _data / postgresql.conf,没有明确的方法来确定正确的。 一旦我在目录中find正确的数据,如何将新创build的postgres容器重新连接到/var/lib/docker/volumes/4948af…/_data这些数据 我有一个每日完整的系统rsync备份。 这怎么能帮助恢复(还没有恢复整个系统)呢?

如何防止数据库docker被重build并丢失生产数据

我喜欢在开发和生产环境中使用docker和docker-compose。 但在我的工作stream程中,我一直将docker工人视为一次性的 : 这意味着如果我需要添加一个function到我的docker,我编辑我的Dockerfile ,然后运行docker-compose build和docker-compose up -d docker-compose build Dockerfile完成。 但这一次,生产数据库也在Docker中。 我仍然需要在我的环境中进行一些更改(例如configuration备份),但是现在我不能重新运行docker-compose build因为这意味着所有数据都将丢失 。这意味着我需要inputdocker docker-compose run web /bin/bash ),然后运行里面的命令,同时将这些命令报告给我的本地Dockerfile以跟踪我的更改。 有关于这种情况的最佳做法吗? 我想在容器销毁之前设置一个将数据库转储到S3存储桶的过程,但是它并没有真正扩展到宽数据库。 我想让Docker不会被破坏(怎么样?),尽pipe这意味着丢失一个容器的可处置性。 我想有一个专门的分区, 只负责存储数据,在重builddocker时不会被破坏,尽pipe安装和解密都很困难。 所以呢? 谢谢

将Tomcatparameter passing给Docker

我是Docker的新手,我有一个问题,我似乎无法find答案。 我正在做一个Docker镜像(consol / tomcat-7.0),并写了一个加载这个镜像的Dockerfile,复制我的war文件,并将一个server.xml,具有唯一的数据库连接细节和默认主机复制到一个新镜像中。 如果我运行了许多带有这个映像的容器,那么让每一个使用相同的war文件,但连接到不同的数据库,并在server.xml中有不同的URL的正确方法是什么? 我目前正在使用不同的细节Dockerfilebuild立图像,每次我想要一个新的实例,这似乎是一个浪费。 所以每次我想要一个新的实例时,我使用这个Dockerfile运行'build': FROM consol/tomcat-7.0:latest MAINTAINER xxx LABEL version="1.0" EXPOSE 80 443 RUN mkdir /vhost/ COPY FILES /vhost/ /vhost/ # my war files – same on every instance COPY FILES/server.xml /opt/tomcat/conf/ # my config file – different on each instance 然后运行这个新的图像。 这样做的正确方法是什么?

Cassandra容器主机中的dynamic存储

我正在研究cassandra容器,并试图findcassandra的数据可以存储在主机本身的方法。 有没有任何链接或教程?

Django与Docker错误 – “无法连接到'127.0.0.1'(111)上的MySQL服务器”)

我想用Django使用Docker,但是我得到错误 – db_1 | error: database is uninitialized and password option is not specified db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)") db_1 | error: database is uninitialized and password option is not specified db_1 | You need to specify one […]

微服务和数据库

在微服务架构中部署数据库的最佳实践是什么,更准确地说是在分布式环境中,比如docker群? 微服务原则规定,每个服务应该是无状态的,以实现扩展。 由于数据库显然有一个状态,它应该在群集之外的固定位置上生存,在群集初始化之前进行部署和configuration? 我很困惑,因为所有的docker组合示例在服务定义中包含数据库容器。 但事情并不那么简单。 在准备使用之前,数据库通常需要大量的configuration。 另外,docker员在协调服务启动顺序方面很糟糕。 如果将数据库和服务一起部署在Docker群中是一个很好的做法,那么如何确保Cricial数据的一致性和持久性呢?

在Docker中启动并填充Postgres容器

我有一个包含我的Postgres数据库的Docker容器。 它使用的官方Postgres图像有一个CMD条目,在主线程上启动服务器。 我想通过在开始监听查询之前运行RUN psql –U postgres postgres < /dump/dump.sql来填充数据库。 我不明白这是如何与Docker可能的。 如果我在CMD之后放置RUN命令,它当然永远不会到达,因为Docker已经完成了对Dockerfile的读取。 但是,如果我把它放在CMD之前,它将在psql甚至存在的过程之前运行。 我如何预先填充Docker中的Postgres数据库?

具有数据的Docker Swarm:共享卷vs集群vs单个实例

我使用Docker Swarm做了第一步,想知道如何处理使用持久化数据(如redis,elasticsearch或数据库)的服务。 我发现了很多关于如何使用docker swarmconfigurationredis / elasticsearch / database集群的教程 – 但是使用共享存储不是更容易吗? 例如,我使用Azure,因此simpy可以使用单个Azure文件存储作为redis / elasticsearch /数据库卷,并让所有节点都安装此文件存储。 这是一种可接受的方法,还是有一些显着的缺点(例如,当两个或多个数据库实例试图同时在该存储上写入时)? 是否build议在每个节点中使用这样的“数据”服务? 还是应该使用Docker Swarm来作为前端服务,并拥有一个redis / elasticsearch / database服务?

dockerize(containerize)数据库有意义吗?

我可以理解dockerizing无状态服务背后的优点,比如web服务器,appservers,负载平衡器等等。如果你在一个机器集群上运行这些服务,那么移动这些容器很容易,开销很小。 我不明白的是集装箱数据库的目的? 数据库连接到在特定硬盘中持久存储的数据卷。 由于状态,实际移动数据库容器并不容易,效率也不高。 所以任何人都可以看到为什么dockerizing数据库可以有用吗?