首先執行 sudo docker pull mysql
命令下載mysql官方鏡像:
zifeiy@zifeiy-PC:~$ sudo docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
5e6ec7f28fb7: Pull complete
4140e62498e1: Pull complete
e7bc612618a0: Pull complete
1af808cf1124: Pull complete
ff72a74ebb66: Pull complete
3a28cb03e3dc: Pull complete
2b52dda3bd7d: Pull complete
dc89e81122ad: Pull complete
ecba98b7a588: Pull complete
109b011a27be: Pull complete
5f380f98ab52: Pull complete
cdda841f5c5c: Pull complete
Digest: sha256:048c2c616866c47c8a9fb604548d32ce842be292b56fba3d90fc07e0e143dac4
Status: Downloaded newer image for mysql:latest
然后使用 netstat -anp | grep 3306
命令是否被占用了,結果如下:
zifeiy@zifeiy-PC:~$ sudo netstat -anp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 1044/mysqld
tcp6 0 0 :::33060 :::* LISTEN 1044/mysqld
可以看到,3306端口已經被mysqld這個進程占用了,原因是我之前已經在我的電腦上啟動了mysqld服務。
所以我們接下來啟動的3台mysql的Docker鏡像,在確定沒有端口占用的情況下,我們將他們的3306端口分別映射到宿主機的3307、3308、3309端口。
使用如下命令創建3個mysql的docker容器:
sudo docker run --name mysql-node3307 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql
sudo docker run --name mysql-node3308 -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 -d mysql
sudo docker run --name mysql-node3309 -e MYSQL_ROOT_PASSWORD=123456 -p 3309:3306 -d mysql
使用 sudo docker ps
命令可以查看當前活躍的docker容器:
zifeiy@zifeiy-PC:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
934bd2e04221 mysql "docker-entrypoint.s…" 9 seconds ago Up 7 seconds 33060/tcp, 0.0.0.0:3309->3306/tcp mysql-node3309
0134cdc3c255 mysql "docker-entrypoint.s…" 18 seconds ago Up 16 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-node3308
725fc710270e mysql "docker-entrypoint.s…" 29 seconds ago Up 28 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp mysql-node3307
可以看到,三台mysql容器已經啟動起來了。
然后我們通過本地的mysql命令連接着三台mysql服務器:
mysql -uroot -p123456 -h127.0.0.1 -P3307
mysql -uroot -p123456 -h127.0.0.1 -P3308
mysql -uroot -p123456 -h127.0.0.1 -P3309
我們使用上面命令的一個連接到其中一台服務器,然后在mysql命令行執行 show variables like 'version'
查看mysql的版本:
mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| version | 8.0.14 |
+---------------+--------+
1 row in set (0.00 sec)
可以看到,是最新版的8.0.14,如果需要其他版本,可以在 docker pull
的時候指定mysql大版本。