Docker中运行一个mysql

服务器环境:centos7

一、docker安装

1.1 安装

摘自:https://developer.aliyun.com/article/110806

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
注意:其他注意事项在下面的注释中
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]
# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
# 经典网络:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC网络:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo

1.2 配置加速镜像

配置阿里云的加速镜像

https://cr.console.aliyun.com/

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速镜像地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、docker中安装mysql

2.1 查询mysql的各个版本

docker search mysql

2.2 拉取镜像

通过pull命令去拉取镜像,默认拉取的是latest版本,可以通过冒号来指定版本,如拉取5.7版本的mysql

docker pull mysql:5.7

可以通过https://hub.docker.com/_/mysql去查询版本号

Docker中运行一个mysql

2.3 查看拉取的镜像

docker images

2.4 新建一个mysql的配置文件

要运行mysql,执行docker run一下就可以了

但是,我们希望做一些配置,如:指定数据库data的存放位置,不区分大小写

这是我们新建一个my.cnf

mkdir -p /data/mysql/config

vim my.cnf

my.cnf中添加参数

[mysqld]
user=mysql
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
event_scheduler=ON
default-time-zone = '+8:00'

其中

  • event_scheduler=ON 表示开启事件支持
  • lower_case_table_names=1 表示数据库不区分大小写
  • default-time-zone = '+8:00' 表示使用中国时区

2.5 docker运行mysql

docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql -v /data/mysql/config/my.cnf:/etc/mysql/my.cnf -v /data/mysql/db:/var/lib/mysql mysql:5.7

各个参数的说明

  • run:运行一个容器
  • -d:设置容器运行模式为后台运行
  • -p:进行端口映射,用于暴露给外界让其访问
  • -e:初始化用户密码
  • --name:自定义容器名称
  • -v:挂载
    • 第一个-v:挂载我们自定义的配置文件
    • 第二个-v:挂载数据库的data存放位置

2.6 查看运行的容器

使用docker ps查看,类似于linuxps,查看全部使用docker ps -a

进入容器内部,使用mysql的相关命令

# 进入容器名称为mysql的内部
docker exec -it mysql /bin/bash

mysql -uroot -p

# 在mysql的命令行中进行操作
show databases;

# 退出
exit

2.7 其他相关

# 查看容器
docker container ls

# 查看所有容器
docker container ls -a

# 删除容器
docker rm [容器名称or容器的id]

docker rm mysql
docker rm 88f9f37e7de8

# 删除容器前先关闭容器
docker stop mysql

# 删除镜像,同样删除镜像之前需要stop依赖这个镜像的容器
docker rmi [image id]

2.8 在安装过程中遇到的坑

run一个容器时,发现没有网络

Docker中运行一个mysql

查了一番之后,说是没有开启转发,网桥配置完之后,需要开启转发,不然容器启动后,就没有网络,配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1

# 编辑文件
vim /etc/sysctl.conf

# 配置转发
net.ipv4.ip_forward=1

# 重启服务,让配置生效
systemctl restart network

# 查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
sysctl net.ipv4.ip_forward

# 重启docker服务
service docker restart


上一篇:VO对象通过groovy模板映射XML文件


下一篇:Android:数据库增删改查、SQLite、ORM、Cursor