使用Docker在本地启动3个MySQL镜像

Posted zifeiy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Docker在本地启动3个MySQL镜像相关的知识,希望对你有一定的参考价值。

首先执行 sudo docker pull mysql 命令下载mysql官方镜像:

[email protected]:~$ 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 命令是否被占用了,结果如下:

[email protected]:~$ 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容器:

[email protected]:~$ 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大版本。


以上是关于使用Docker在本地启动3个MySQL镜像的主要内容,如果未能解决你的问题,请参考以下文章

14-9 Docker之Mysql安装

14-9 Docker之Mysql安装

docker容器不会以Mysql docker镜像启动

docker中mysql同步数据

Docker实践之镜像启动及常用命令

客快物流大数据项目:Docker应用部署