Docker安装mysql
docker pull mysql:5.7
[root@easybuy ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
查看镜像
docker images
[root@easybuy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20234f18b13 14 months ago 448MB
创建实例并且启动mysql
[root@easybuy ~]# docker run -p 3306:3306 --name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
docker run -p 3306:3306 --name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
容器与容器之间是相互隔离的,容器内部相当于一个完整的Linux系统,这些命令就是为了让容器内部与当前服务器的端口、文件“连接上”。将容器内部的端口映射出来是为了能够通过直接访问服务器的3306端口就能访问到mysql容器内部的3306端口。文件挂载出来是为了方便我们在容器外部访问到常用的文件,不需要再进入容器内部进行访问。
-p 3306:3306 --name mysql 将容器中的3306端口映射到主机的3306端口
-v /mydata/mysql/log:/var/log/mysql 将日志文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql 将配置文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root 初始化root用户的密码
-d mysql:5.7
查看是否成功
[root@easybuy ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ffd49d64e122 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
可以使用SQLyog连接mysql查看是否成功(阿里云要提前开放端口不然会连接失败)
查看服务器主机的mydata文件夹(注意,修改了其中的文件,内部容器也会发生变化)
[root@easybuy /]# ls
bin dev home lib64 media mydata proc run srv tmp var
boot etc lib lost+found mnt opt root sbin sys usr
[root@easybuy /]# cd mydata
[root@easybuy mydata]# ls
mysql
[root@easybuy mydata]# cd mysql/
[root@easybuy mysql]# ls
conf data log
修改Mysql配置
[root@easybuy mysql]# vi /mydata/mysql/conf/my.cnf
进入文件后插入
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES uft8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
保存修改之后,重启mysql容器
[root@easybuy mysql]# docker restart mysql
mysql
验证我们的修改在容器内部造成了影响
docker exec -it mysql /bin/bash 进入容器内
[root@easybuy mysql]# docker exec -it mysql /bin/bash
root@ffd49d64e122:/# cd /etc/mysql
root@ffd49d64e122:/etc/mysql# ls
my.cnf
root@ffd49d64e122:/etc/mysql# cat my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES uft8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
root@ffd49d64e122:/etc/mysql# exit;
exit
[root@easybuy mysql]#