首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker中创建卷并在容器中使用它

问在docker中创建卷并在容器中使用它
EN

Stack Overflow用户
提问于 2015-12-11 21:03:08
回答 1查看 118关注 0票数 2

我有一个应用程序容器myapp和一个数据库容器sqldb。

我有一个sql文件,我想在其中将数据库导入到应用程序中。但它会在容器停止时刷新数据。

因此,我希望使用卷,以便我的数据库保持更新。

我已经看过如何创建卷的文档,但我很困惑。

请告诉我如何使用卷来使用我更新的数据库?

以及如何创建卷并将其链接到我的应用程序容器?

EN

回答 1

Stack Overflow用户

发布于 2015-12-11 22:37:01

您有一个使用mysql in this blog post的具体示例。

首先,它创建一个 (一个从不运行容器,但包含数据,并由其他容器挂载)

代码语言:javascript
复制
 docker create -v /var/lib/mysql --name my-database mysql  /bin/true

然后,它自己运行数据库,使用--volumes-from选项挂载第一个数据卷容器:

代码语言:javascript
复制
 docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 --volumes-from my-database -d mysql`

我没有,也不想在我的原始笔记本电脑上安装MySQL客户端(可视化的或其他的)。

那么,我们如何将模式和数据放入运行在Docker上的MySQL容器中呢?答案是使用链接到我们的“服务器实例”的另一个MySQL Docker容器来运行我们需要的任何命令。

代码语言:javascript
复制
docker run -it --link mysql:mysql --rm mysql sh -c \
   'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" \
   -P"$MYSQL_PORT_3306_TCP_PORT" -uroot \
   -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" \
   -e "create schema my-schema"'`

该命令运行另一个mysql容器,但这个容器仅用于执行mysql命令,该命令链接到运行实际数据库的mysql容器。

检查数据库是否已创建:

代码语言:javascript
复制
$ docker run -it --link mysql:mysql --rm mysql sh -c \
    'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" \
    -P"$MYSQL_PORT_3306_TCP_PORT" -uroot \
    -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" \
    -e "show databases"'
Warning: Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my-schema          |
| mysql              |
| performance_schema |
+--------------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34224242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档