Docker安装MySQL
CentOS上使用Docker安装MySQL
Docker安装MySQL
安装docker
-
安装
yum-utils
工具包1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加docker的yum源(阿里源)
1
2
3sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -
卸载旧版本(如果存在则删除)
1
sudo yum -y remove docker docker-common docker-selinux docker-engine
-
查看所有版本,并选择指定版本安装
1
sudo yum list docker-ce --showduplicates | sort -r
-
安装docker
1
sudo yum install docker-ce # 默认安装最新版本
$ yum install docker-ce-<VERSION_STRING>
(指定安装版本)。例:yum install docker-ce-18.03.1.ce
-
验证安装成功
-
启动并加入开机启动
1
2
3sudo systemctl start docker # (重启命令 $ systemctl restart docker )
sudo systemctl enable docker # 开机自启动
sudo docker version # 查看docker版本号 -
验证安装成功
1
sudo docker run hello-world
-
将当前用户(此时可以使用dev登录)加入到
docker
用户组-
新增
docker
用户组,已存在可忽略1
sudo groupadd docker
-
将用户加入
docker
用户组1
sudo usermod -aG docker ${USER}
-
重启
docker
服务1
sudo systemctl restart docker
-
重新登录用户
-
安装MySQL
-
查看可用的MySQL版本
-
拉取docker镜像(可以直接使用第7步操作进行拉取)
1
2
3
4docker pull mysql:5.7
# docker pull mysql:{tag}
# 如 docker pull mysql:5.7
# docker pull mysql 会默认拉取最新版本 -
查看本地是否安装了MySQL
1
docker images
-
创建本地数据目录及复制MySQL的配置文件
1
mkdir -p /home/dev/data/mysql/data /home/dev/data/mysql/logs /home/dev/data/mysql/conf
1
2
3
4
5
6
7
8├── mysql
│ ├── conf # 拷贝自MySQL
│ │ ├── docker.cnf
│ │ ├── mysql.cnf
│ │ └── mysqldump.cnf
│ ├── data
│ └── logs- 配置文件挂载到服务器主要为了修改方便,配置文件可以通过如下方式获取.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36# 启动获取配置文件的docker容器
$ docker run -p 23306:3306 --name mysql_config -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
# 查看容器是否启动
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e454f36eb8c5 mysql:5.7 "docker-entrypoint.s…" 26 seconds ago Up 24 seconds 33060/tcp, 0.0.0.0:23306->3306/tcp, :::23306->3306/tcp mysql_config
# 进入容器,查看配置文件
$ docker exec -it mysql_config /bin/bash
$ cd /etc/mysql/conf.d/
$ ls -rlt
total 12
-rw-r--r-- 1 root root 55 Aug 3 2016 mysqldump.cnf
-rw-r--r-- 1 root root 8 Aug 3 2016 mysql.cnf
-rw-r--r-- 1 root root 43 Apr 19 18:57 docker.cnf
$ exit # 退出容器
# 拷贝容器中文件到本机, `.` 表示拷贝到当前目录
$ docker cp mysql_config:/etc/mysql/conf.d/ .
# 查看拷贝结果
$ ls
conf.d data front install_package java middle
# 将conf.d中文件拷贝到指定的文件夹即可
$ mv conf.d/* ~/data/mysql/conf
# 删除空文件夹
$ rm -rf conf.d
# 关闭容器并删除
$ docker stop mysql_config
$ docker rm mysql_config -
启动脚本
1
docker run -p 3306:3306 --name mysql -v /home/dev/data/mysql/conf:/etc/mysql/conf.d -v /home/dev/data/mysql/logs:/logs -v /home/dev/data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
-p 主机端口:容器内端口
:将容器内的MySQL使用的3306端口映射到主机的3306端口-v 主机路径:容器内路径
:将容器内路径映射到主机路径-e VAR={value}
:指定容器内环境变量的值-d
:指定容器后台运行