本文主要討論使用Docker快速啟動 MySQL 測試的方法,包括Mac環境。一起看看吧!
近來業界有很多對Docker的討論,其生態系統發展得很快,然而,從簡單的“入門”或“引導”類的文章中能容易地找到成熟的技術,但Docker不然。我在Mac上試玩過Docker,但Mac絕對是Docker界的二等公民。當我在Giuseppe的博客上看到關于在Mac上使用新Docker beta《Docker for Mac beta and MySQL》一文時,決定自己來嘗試下。這些步驟適用于Mac(Windows也可能),亦能適配Linux環境(GA版本,Docker 1.11.1)。
首先,在Mac上注冊新的Docker測試版程序,接著從Docker中獲得下載代碼。此過程我耗時一天,但應該不久就會發布完整版。安裝完成后,我需要為常見的MySQL版本設置一些Docker容器,沙箱也就有了。方法如下:
1
2
3
4
5
6
7
8
9
10
|
jayj@~ [510]$ docker network create test 90005b3ffa9fef1f817ee4965e794a567404c9a8d5bf07320514e7d848d59ff9 jayj@~ [511]$ docker run --name=mysql57 --net=test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:5.7 6c80fa89610dbd5418ba474ad7d5451cd061f80a8a72ff2e718341827a08144b jayj@~ [512]$ docker run -it --rm --net=test -e MYSQL_HOST=mysql57 mysql/shell init Creating a Classic Session to root@mysql57:3306 Enter password : No default schema selected. enableXProtocol: Installing plugin mysqlx... enableXProtocol: done |
一些經驗總結:
我為我的容器創建了一個名為“測試”的網絡以共享,本質是容器之間一個專用的私有網絡。我喜歡這個是因為在相關的端口是監聽多個容器,也不必設置主機操作系統的端口。
我將Oracle的官方MySQL Docker容器啟動一個MySQL 5.7的鏡像,在綁定到該測試網絡。
我使用了MySQL /shell鏡像(來自Oracle)來初始化MySQL 5.7服務器上的mysqlx插件。需要注意的是,我并沒有輸入密碼,因為我沒有創建一個服務器(不安全,但它是一個沙箱)。
這個里面的Shell使用了運行后刪除的臨時容器,所以并不會破壞Docker ps-a輸出。
所以,現在我希望能夠使用標準的MySQL命令行或新的MySQL shell來訪問這個容器。讓它看起來很干凈,因此我添加了一些bash別名:
1
2
|
alias mysqlsh= 'docker run -it --rm --net=test mysql/shell' alias mysql= 'docker run -it --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --net=test --entrypoint="mysql" mysql/mysql-server:5.7' |
這些以后,我可以直接調用他們并通過正常的命令行選項來連接我的MySQL 5.7鏡像,就像使用的是一個原生的MySQL CLI binary。從MySQL 5.7鏡像中使用MySQL CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
jayj@~ [524]$ mysql -h mysql57 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 4 Server version: 5.7.12 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show schemas; + --------------------+ | Database | + --------------------+ | information_schema | | mysql | | performance_schema | | sys | + --------------------+ 4 rows in set (0.01 sec) |
使用MySQL shell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
jayj@~ [527]$ mysqlsh -h mysql57 -u root --session-type=node Creating a Node Session to root@mysql57:33060 Enter password : No default schema selected. Welcome to MySQL Shell 1.0.3 Development Preview Copyright (c) 2016, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help' , 'h' or '?' for help. Currently in JavaScript mode. Use sql to switch to SQL mode and execute queries. mysql-js> sql Switching to SQL mode... Commands end with ; mysql-sql> show schemas; + --------------------+ | Database | + --------------------+ | information_schema | | mysql | | performance_schema | | sys | + --------------------+ 4 rows in set (0.00 sec) mysql-sql> |
現在,如果為了一些事情想要運行檢查MySQL 5.5,可以這樣做:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
jayj@~ [530]$ docker run --name=mysql55 --net=test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:5.5 Unable to find image 'mysql/mysql-server:5.5' locally 5.5: Pulling from mysql/mysql-server a3ed95caeb02: Already exists ffe36b360c6d: Already exists 646f220a8b5d: Pull complete ed65e4fea7ed: Pull complete d34b408b18dd: Pull complete Digest: sha256:12f0b7025d1dc0e7b40fc6c2172106cdf73b8832f2f910ad36d65228d9e4c433 Status: Downloaded newer image for mysql/mysql-server:5.5 6691dd9d42c73f53baf2968bcca92b7f4d26f54bb01d967be475193305affd4f jayj@~ [531]$ mysql -h mysql55 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1 Server version: 5.5.49 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show schemas; + --------------------+ | Database | + --------------------+ | information_schema | | mysql | | performance_schema | + --------------------+ 3 rows in set (0.00 sec) 或者,Percona Server: jayj@~ [534]$ docker run --name=ps57 --net=test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d percona/percona-server:5.7 Unable to find image 'percona/percona-server:5.7' locally 5.7: Pulling from percona/percona-server a3ed95caeb02: Pull complete a07226856d92: Pull complete eee62d87a612: Pull complete 4c6755120a98: Pull complete 10eab0da5972: Pull complete d5159a6502a4: Pull complete e595a1a01d00: Pull complete Digest: sha256:d57f0ce736f5403b1714ff8d1d6b91d5a7ee7271f30222c2bc2c5cad4b4e6950 Status: Downloaded newer image for percona/percona-server:5.7 9db503852747bc1603ab59455124663e8cedf708ac6d992cff9b43e2fbebd167 jayj@~ [537]$ mysql -h ps57 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.7.10-3 Percona Server (GPL), Release 3, Revision 63dafaf Copyright (c) 2000, 2016, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> |
所以,這一切都很好,一旦鏡像被本地緩存,上下調整新的容器可以實現無痛和快速。所有這一切的工作都是與我的操作系統工作站分離的。可能還有其他事情可以使用這種設置,但還沒找到方法(如加載數據文件、運行代碼來連接這些容器等),但將來我會解決。
以上所述是小編給大家介紹的Mac上使用Docker快速啟動MySQL測試的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://geek.csdn.net/news/detail/78009