安装,以MySql5.7版本为例子。
docker默认的仓库比较慢,可以参考以下文章 第五标题 设置阿里云镜像仓库。
docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01-CSDN博客
一、拉去mysql镜像
docker pull mysql:5.7
如下安装完成
[root@syf ~]# docker pull mysql:5.7
5.7: 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
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
查看本地镜像仓库拉去好的mysql,确认版本号
docker images
如下:
[root@syf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
二、后台运行mysql镜像
2.1 先配置mysql配置文件
如下流程1,2步骤(复制即可):新建目录 /data/dockerData/mysql/conf,编写 my.config文件
1-新建文件夹
[root@syf/]# mkdir -p /data/dockerData/mysql/conf
[root@syf/]# cd /data/dockerData/mysql/conf
2-创建文件
[root@syf conf]# touch my.config
[root@syf conf]# ls
my.config
3-编写文件内容 (进入后 i 子母键插入,黏贴下面配置,:wq! 保存并退出)
[root@syf conf]# vim my.config
my.config 配置文件如下
[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
secure_file_priv=/var/lib/mysql
[client]
default-character-set=UTF8MB4
2.2 运行mysql容器
注意:
- 修改字符集编码需要重启容器,完成后要在 服务器上查看字符集。
- 挂载数据卷:实例删除后数据依存在
docker run --privileged -d -p 3306:3306 -v /data/dockerData/mysql/conf/my.config:/etc/mysql/my.config -v /data/dockerData/mysql/logs:/logs -v /data/dockerData/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 --name mysql5.7 容器id
运行如下:
1-查看镜像id,即IMAGE ID
[root@syf conf]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
2-后台运行镜像,创建数据卷,指定3306端口
[root@syf conf]# docker run --privileged -d -p 3306:3306 -v /data/dockerData/mysql/conf/my.config:/etc/mysql/my.config -v /data/dockerData/mysql/logs:/logs -v /data/dockerData/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 --name mysql5.7 c20987f18b13
bc74416fac38678c2e7ea5c61bc3a87215541125c7b3a80368892e4e6efb4f39
3-查看容器
[root@syf conf]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc74416fac38 c20987f18b13 "docker-entrypoint.s…" 13 seconds ago Up 11 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql5.7
上面运行镜像容器参数详细解释
--privileged 允许挂载数据卷,默认是读写权限rw
-d:以后台方式运行实例,(退出容器mysql依旧运行)
配置端口映射:
-p 3306:3306 指定宿主机器3306 :docker容器3306端口 映射。mysql数据卷挂载解读:
**1.日志文件挂载 **:-v /data/dockerData/mysql/logs:/logs ()
将容器中的日志文件夹 /var/log/mysql 挂载到 宿主机对应的 /mydata/mysql 文件夹中。2.数据文件挂载: -v /data/dockerData/mysql/data:/var/lib/mysql
将容器中的数据文件夹 /var/lib/mysql 挂载到宿主机对应的 /mydata/mysql/data 文件夹中。3.mysql 配置文件挂载:-v /data/dockerData/mysql/conf/my.config:/etc/mysql/my.config
将容器的配置文件夹etc/mysql/my.config挂载到宿主机对应的 /data/dockerData/mysql/conf/my.config 文件夹中。设置数据库root的密码:
MYSQL_ROOT_PASSWORD=数据库密码
设置mysql容器名称:
--name mysql5.7
c20987f18b13 :指定用这个镜像来创建运行实例。
最后:连接你的mysql (服务器端口 3306要开放)
2.3 查看mysql,并登入
1-查看容器
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc74416fac38 c20987f18b13 "docker-entrypoint.s…" 28 minutes ago Up 28 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql5.7
2-进入容器
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker exec -it bc74416fac38 /bin/bash
3-登录mysql
root@bc74416fac38:/# mysql -u root -p
Enter password:1234
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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.
4-查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
最后一定要放开防火墙端口
- 输入指令:**
firewall-cmd --zone=public --add-port=3306/tcp --permanent
**,开放防火墙指定端口。- 输入指令:**
firewall-cmd --reload
**,重新加载防火墙。
mysql容器开机启动
开机启动
docker update --restart=always 容器ID
取消
docker update --restart=no 容器ID
版权归原作者 syfjava 所有, 如有侵权,请联系我们删除。