安装Docker环境(CentOS 7.4)
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
通常我们使用Docker的时候都是使用的root,官方说法如下:
The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it with sudo. For this reason, docker daemon always runs as the root user.
To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
下面是使用非root用户操作的步骤:
创建docker组
sudo groupadd docker
将当前用户加入docker组
sudo gpasswd -a ${USER} docker
重新启动docker服务
sudo systemctl restart docker
修改/var/run/docker.sock权限
sudo chmod a+rw /var/run/docker.sock
Step 5: 下载Mysql官方镜像
运行
docker pull mysql:5.7
下载mysql5.7官方镜像,用docker images查看已下载的镜像列表。
初始化Mysql服务
配置数据库参数
Step 6:修改init.sh文件,配置说明:
#!/bin/bash
command=`docker ps |grep mysql`
if [[ "$command" == "" ]];then
echo "strting mysql..."
docker start mysql
else
echo "mysql is starting !"
fi
➜ mysql ./start.sh
mysql is starting !
➜ mysql cat init.sh
#!/bin/bash
# 在Docker容器中初始化mysql服务
# 镜像名称
IMAGE=$1
# 容器名称
INSTANCE_NAME=mysql
# Mysql数据文件存放路径,默认为当前shell文件所在目录
HOME=$(cd `dirname $0`; pwd)
#数据存储目录
DATA_DIR="$HOME/data"
#数据存储目录
CONF_DIR="$HOME/conf"
#数据库名
DATABASE=swqdb
#用户名
USER=swq
#用户密码
PASSWORD=swq#2018
# ROOT密码
ROOT_PASSWORD=swq#2018
#创建data文件夹
mkdir data conf
DOCKER_PARAM="-v $CONF_DIR:/etc/mysql/conf.d -v $DATA_DIR:/var/lib/mysql"
MYSQL_PARAM="-e MYSQL_ROOT_PASSWORD=$ROOT_PASSWORD -e MYSQL_DATABASE=$DATABASE -e MYSQL_USER=$USER -e MYSQL_PASSWORD=$PASSWORD"
MYSQL_VARS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
docker run -p 3306:3306 --name $INSTANCE_NAME $DOCKER_PARAM --user 1000:1000 $MYSQL_PARAM -d $IMAGE $MYSQL_VARS
Step 7: 初始化服务
创建Mysql目录
sudo mkdir -p /data/mysql
在mysql目录创建init.sh文件(见上)
docker run -p 3306:3306 --name $INSTANCE_NAME $DOCKER_PARAM --user 1000:1000 $MYSQL_PARAM -d $IMAGE $MYSQL_VARS
中的--user 1000:1000
是当前用户的uid和gid,因为docker容器内部默认是使用root账户,该命令可以使映射的文件夹拥有者为当前操作用户.
Step 8: 执行初始化脚本
./init.sh mysql:5.7
执行完上述命令后mysql服务初始化完成,并自动启动,创建了一个名为mysql数据文件存放于/data/mysql/data目录,服务端口号3306,创建了默认数据库qiyuesuodb,默认用户qiyuesuo初始密码qiyuesuo#2018。
Mysql服务管理
启动服务:docker start mysql
停止服务:docker stop mysql
登录数据库:mysql -h 127.0.0.1 -uswq -pswq#2018
清除数据:停止mysql服务,cd至mysql目录,sudo rm -rf ./data
删除data文件夹,然后再启动服务即可。
其他脚本
remove.sh
清除所有数据并删除容器:
#!/bin/bash
#说明
#1.先用户确认是否删除
#2.用户确认后删除容器和data目录
echo -n "This operation will completely remove mysql and mysql data , continue? [y/n] "
read opt
if [[ $opt == y ]];then
echo "removing mysql..."
docker rm -f mysql
echo "removing mysql data..."
rm -rf data conf
echo "All of mysql data are removed! "
elif [[ $opt == n ]];then
echo "Exiting..."
else
echo "Please input y or n!"
echo "Exiting..."
fi
backup.sh
备份当前数据
#!/bin/bash
#获取当前日期
echo "创建备份文件夹..."
ls_date=`date +%Y%m%d`
mkdir backup$ls_date
echo "备份数据库配置和数据..."
cp -r ./conf ./backup$ls_date
cp -r ./data ./backup$ls_date
echo "备份完成.."