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:指定容器后台运行