宿主机器的用户是 _mysql ,容器中的是 mysql ,宿主机器的 mysql 服务已经停止,宿主机器 5.5.45 ,容器是官方的 image , 5.6 版本
使用的命令是:
docker run --name db -e MYSQL_ROOT_PASSWORD=root -d -v /usr/local/mysql/data:/var/lib/mysql mysql:5.6 --lower_case_table_name=1
其中 /usr/local/mysql/data 是宿主机器的 mysql 的 data 目录, /var/lib/mysql 是容器中的目录 进入之后,能看宿主机器的其中几个数据文件夹,比如宿主中有 A,B,C,D 数据库,而容器中只能看到 A,C ,而且 cd 进去啥也没有
尝试过,将宿主机器 A 数据库从原始目录拷贝到 home 下的其他目录,再次使用
docker run --name db -e MYSQL_ROOT_PASSWORD=root -d -v /Users/sven/Documents/workspace/docker/db/bluemountain:/var/lib/mysql/bluemountain/ mysql:5.6 --lower_case_table_name=1]
这个命令挂载,进入到容器中,是可以 use db 和 show tables ;但是 select 的时候永远找不到表
docker logs db,mysql的启动日志如下
2016-05-21 06:28:45 0 [Warning] Using unique option prefix lower_case_table_name instead of lower_case_table_names is deprecated and will be removed in a future release. Please use the full name instead.
2016-05-21 06:28:45 0 [Note] mysqld (mysqld 5.6.30) starting as process 1 ...
2016-05-21 06:28:45 1 [Note] Plugin 'FEDERATED' is disabled.
2016-05-21 06:28:45 1 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-05-21 06:28:45 1 [Note] InnoDB: The InnoDB memory heap is disabled
2016-05-21 06:28:45 1 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-05-21 06:28:45 1 [Note] InnoDB: Memory barrier is not used
2016-05-21 06:28:45 1 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-05-21 06:28:45 1 [Note] InnoDB: Using Linux native AIO
2016-05-21 06:28:45 1 [Note] InnoDB: Using CPU crc32 instructions
2016-05-21 06:28:45 1 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2016-05-21 06:28:45 1 [Note] InnoDB: Completed initialization of buffer pool
2016-05-21 06:28:45 1 [Note] InnoDB: Highest supported file format is Barracuda.
2016-05-21 06:28:45 1 [Note] InnoDB: The log sequence numbers 1626057 and 1626057 in ibdata files do not match the log sequence number 1626067 in the ib_logfiles!
2016-05-21 06:28:45 1 [Note] InnoDB: Database was not shutdown normally!
2016-05-21 06:28:45 1 [Note] InnoDB: Starting crash recovery.
2016-05-21 06:28:45 1 [Note] InnoDB: Reading tablespace information from the .ibd files...
2016-05-21 06:28:45 1 [Note] InnoDB: Restoring possible half-written data pages
2016-05-21 06:28:45 1 [Note] InnoDB: from the doublewrite buffer...
2016-05-21 06:28:45 1 [Note] InnoDB: 128 rollback segment(s) are active.
2016-05-21 06:28:45 1 [Note] InnoDB: Waiting for purge to start
2016-05-21 06:28:45 1 [Note] InnoDB: 5.6.30 started; log sequence number 1626067
2016-05-21 06:28:45 1 [Note] Server hostname (bind-address): '*'; port: 3306
2016-05-21 06:28:45 1 [Note] IPv6 is available.
2016-05-21 06:28:45 1 [Note] - '::' resolves to '::';
2016-05-21 06:28:45 1 [Note] Server socket created on IP: '::'.
2016-05-21 06:28:45 1 [Warning] 'proxies_priv' entry '@ root@825bfa89d625' ignored in --skip-name-resolve mode.
2016-05-21 06:28:45 1 [Note] Event Scheduler: Loaded 0 events
2016-05-21 06:28:45 1 [Note] mysqld: ready for connections.
Version: '5.6.30' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
网上看过一些文章,是否容器只能用自己生产的数据库,然后持久化在本地,而不能使用本地已经存在的数据库文件
在下不才,请指点
1
SvenWong OP 求教
|
2
kungfuchicken 2016-05-21 16:34:43 +08:00 1
1. 容器和宿主机器使用的 mysql 版本最好相同(大版本号,如 5.5.x )
2. 你可以直接把容器的 mysql 的数据目录映射到宿主机器的 mysql 数据目录,你说的看不到数据可能是权限问题,如果宿主机器是* nix 系统,请进入到容器里面把容器里面的 mysql 用户的 id 修改为宿主机的 mysql 用户相同的 id |
3
SvenWong OP @kungfuchicken 多谢,我去试一下,其实目的就是让容器的 mysql 服务,直接使用宿主上已经存在的数据。
宿主是 OS X 系统, mysql 运行用户的 id 确实是不一样的,宿主是 _mysql ,而容器是 mysql 。 大版本号确实不一样,我用一个相同的试一下。谢啦 |