Linux - docker 下 mysql 的安装与配置

115 阅读2分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

安装过程

官方脚本安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

设置开机启动

systemctl enable docker
systemctl is-enabled docker # 检查设置状态

拉取mysql镜像

docker pull mysql:latest

查看本地镜像

docker images

运行容器

docker run -id \
-p 3306:3306 \
--name=mysql_container \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/logs \
-v /usr/local/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

跳转终端

docker exec -it mysql-running bash

登录

mysql -uroot -pxxx

附录

mysqld 进程占用过高解决方案

首先跳转到 mysql 内:docker exec -it mysql /bin/bash

如果是新创建的 container,内部没有安装 vim 编辑器,需要先运行以下指令安装下

apt-get update
apt-get install vim

随后修改/etc/mysql/my.cnf文件,建议的配置如下:

key_buffer_size = 16M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

docker run 详解

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的高端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="illtamer": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

docker exec 详解

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

-d : 分离模式: 在后台运行

-i : 即使没有附加也保持STDIN 打开

-t : 分配一个伪终端