1. docker search mysql
$ docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11880 [OK]
mariadb MariaDB Server is a high performing open sou… 4541 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 889 [OK]
percona Percona Server is a fork of the MySQL relati… 566 [OK]
使用 stars 最多就好(注意有的时候stars最多的可能不是你搜的那个名字),就是 mysql.
2. docker pull mysql
$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
3. 设置国内镜像源
如果出现超时,可以设置国内源,一般就能成功。
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"debug": false,
"experimental": false,
"features": {
"buildkit": true
},
"insecure-registries": [],
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://hub.daocloud.io"
]
}
4. 运行 mysql 镜像
$ docker run -d --name=nest-demo-2021-12-29-mysql -v /data/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
3d2951007960916a27e233ce9f06e071f3d321eefcebcbcf743d8d8cb21974cd
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d2951007960 mysql "docker-entrypoint.s…" 49 seconds ago Up 48 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp nest-demo-2021-12-29-mysql
稍微解释下:
- -d 表示在后台运行容器
- --name 表示为后台运行的容器取别名,便于后续的操作
- -v 用来指定数据卷,将正在运行mysql的容器上的/var/lib/mysql目录映射到宿主机上的/data/mysql目录 可以看到已经运行了。
5. 使用 mysql
-
- 进入
mysql
- 进入
$ docker exec -it nest-demo-2021-12-29-mysql /bin/bash
-
- 连接
mysql
- 连接
mysql -uroot -p123456
-
- 使用
mysql库
- 使用
use mysql;
-
- 修改访问主机以及密码等,设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-
- 刷新
flush privileges;
使用Navicat连接数据库时就可以正常连接了。
注意: 如果不执行上面的4-5两步,会出现navicat链接不上的错误!
参考文章 docker 安装mysql8