- 1下载 MySQL镜像
[root@doc ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
fc7181108d40: Pull complete
787a24c80112: Pull complete
a08cb039d3cd: Pull complete
4f7d35eb5394: Pull complete
5aa21f895d95: Pull complete
a742e211b7a2: Pull complete
0163805ad937: Pull complete
62d0ebcbfc71: Pull complete
559856d01c93: Downloading 45.67MB/83.75MB
c849d5f46e83: Download complete
f114c210789a: Download complete
- 2下载完后查看镜像是否下载完成
[root@doc ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 a1aa4f76fab9 28 hours ago 373MB
- 3以最简单的方法启动MySQL
[root@doc ~]# docker run -d \
> --name mysql \
> -p 306:3306 \
> -e MYSQL_ROOT_PASSWORD=123456 \
> mysql:5.7
b3ec00bfa1bb4d6c5cce8e470f6c957821d9379aa0ac26cb305b4090fe38b861
-d:后台运行
--name mysql :制定容器名称为mysql
-p 306:3306 :将容器的 3306 端口挂载到宿主机的 306 端口上(连接端口)
-e MYSQL_ROOT_PASSWORD=123456 :指定root的密码为123456
此时可以查看启动的容器
[root@doc ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3ec00bfa1bb mysql:5.7 "docker-entrypoint.s…" About an hour ago Up About an hour 33060/tcp, 0.0.0.0:306->3306/tcp mysql
使用可视化工具可以连接
image.png
- 4正式运行MySQL容器
由于上一种启动方法未将容器中的目录文件复制到宿主机上,每次启动容器数据都会丢失。可以有两种方法解决
1.手动复制
docker cp mysql:/var/lib/mysql/ /root/data/mysql
2.删除之前的容器,在启动容器时直接将目录挂载到宿主机
[root@doc ~]# docker ps -all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3ec00bfa1bb mysql:5.7 "docker-entrypoint.s…" 21 hours ago Exited (0) 15 hours ago mysql
[root@doc ~]# docker rm b3ec00bfa1bb
b3ec00bfa1bb
[root@doc data]# docker run -d --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /root/data/mysql:/var/lib/mysql mysql:5.7
3536fe7480f9696a00e53ddcdae58d294d4ee2246ea8ce532dd69584b7183b4f
[root@doc data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3536fe7480f9 mysql:5.7 "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql1
-v /root/data/mysql:/var/lib/mysql 将容器中的/var/lib/mysql数据目录挂载到宿主机/root/data/mysql 目录下
通过客户端测试链接
image.png
新建数据库,到宿主机数据目录下查看,发现已经放到新的目录下