docker安装mysql

主要步骤:
1.安装docker
2.拉取mysql7.5镜像
3.创建并启动mysql容器

安装docker

yum install docker -y
systemctl restart docker 
systemctl enable docker

给docker加上国内镜像站,加快拉取镜像时间:

vim /etc/docker/daemon.json

添加以下内容:

{
        "registry-mirrors": ["https://registry.docker-cn"]
}

启动docker

sudo systemctl daemon-reload
sudo systemctl restart docker

sudo docker pull mysql:5.7
sudo docker image ls

创建挂载目录

sudo mkdir -p /data/docker_mysql5.7/{cnf,data}

写入配置文件

cat > /data/docker_mysql5.7/cnf/myf << EOF
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
#!includedir /etc/mysql/conf.d/
innodb_buffer_pool_size = 1G
skip-host-cache
# 禁用dns解析
skip-name-resolve
EOF

创建mysql容器并启动:

sudo docker run \
    -p 3307:3306 \
    -v /data/docker_mysql5.7/data:/var/lib/mysql \
    -v /data/docker_mysql5.7/cnf:/etc/mysql \
    -v /etc/localtime:/etc/localtime:ro \
    --privileged=true \
    --name docker_mysql5.7 \
    --restart always \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7

进入容器

sudo docker exec -it docker_mysql5.7  bash
mysql -u root -p


python安装myql脚本

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import json
import subprocess

mount_path = "/data/docker_mysql5.7"   # 挂载路径

# myf 配置文件
my_cnf = """[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
#!includedir /etc/mysql/conf.d/
innodb_buffer_pool_size = 1G
skip-host-cache
skip-name-resolve    # 禁用dns解析
max_connections=1000 #最大连接数
"""

# 运行容器命令
run_cmd = r"""sudo docker run \
    -p 3307:3306 \
    -v /data/docker_mysql5.7/data:/var/lib/mysql \
    -v /data/docker_mysql5.7/cnf:/etc/mysql \
    -v /etc/localtime:/etc/localtime:ro \
    --privileged=true \
    --name docker_mysql5.7 \
    --restart always \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7
"""


# docker 安装
def docker_install():
    docker_daemon = {"registry-mirrors": ["https://registry.docker-cn"]}   # daemon.json
    daemon_path = r"/etc/docker/daemon.json"
    #docker检测是否安装
    if not os.system("docker version"):
        print("docker 已安装")
    else:
        print("docker 正在安装...")
        os.system("yum install docker -y")
        os.system("systemctl restart docker")
        os.system("systemctl enable docker")
        os.system("systemctl enable docker")
        with open(daemon_path, "w", encoding="utf-8") as f:
            json.dump(docker_daemon, f, ensure_ascii=False, indent=4)

# mysql 安装
def mysql_install(my_cnf: str, mount_path: str, docker_run: str):
    """
    my_cnf: str  # myf
    mount_path: str   # 挂载的目录
    docker_run: str   #  docker run命令
    """
    os.system("docker pull mysql:5.7")    # 拉取镜像
    os.system("mkdir -p {}/cnf".format(mount_path))
    os.system("mkdir -p {}/data".format(mount_path))
    config_path = "{}/cnf/myf".format(mount_path)
    with open(config_path, "w") as f:
        f.write(my_cnf)
    os.system(docker_run)
    os.system("docker ps -a |grep mysql")

docker_install()
mysql_install(my_cnf, mount_path, run_cmd)

续更

更多推荐

python之mysql安装