Linux(wsl)安装docker和mysql主从搭建

Posted 13B

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux(wsl)安装docker和mysql主从搭建相关的知识,希望对你有一定的参考价值。

开始安装

参考文档:https://www.jianshu.com/p/3eb1e178f51b
(最后使用windows本地docker,wsl中代理,因为当前版本不支持,最新版本据说支持了,没有尝试过)

docker常用命令

docker exec -it ecmysql bash 进入容器

docker logs slave -f

docker images

docker ps -a

docker kill xx

docker rm xx

docker rmi REPOSITORY:TAG //删除镜像 REPOSITORY:TAG(或者镜像id)命令格式

docker ps -a | grep \'Exited\' | awk \'{print $1}\' | xargs docker stop | xargs docker rm //删除所有以及结束的容器

docker images | grep \'\' | awk \'{print $3}\' | xargs docker rmi //删除所有无用的镜像

WSL下要在管理员模式下开启bash

Settings设置Docker Enigine

可以设置morrors 这里是https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 阿里个人镜像

{
"registry-mirrors": [
"https://i20k2nmr.mirror.aliyuncs.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}

在Windows PowerShell (管理员)下

先在新建 docker/mysqldocker/mysqlConf 文件夹

下载镜像

docker pull mysql

运行镜像

docker run -d --rm --name ecMysql \\

-v D:\\docker\\mysql:/var/lib/mysql \\

-v D:\\docker\\mysqlConf:/etc/mysql/conf.d \\

-e MYSQL_ROOT_PASSWORD=123456 -p 3305:3306 mysql \\

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

cp -r /var/lib/mysql /opt/docker/master/mysql
cp -r /etc/mysql/my.cnf /opt/docker/master/my.cnf
cp -r /etc/mysql/conf.d /opt/docker/master/conf.d
cp -r /etc/mysql/mysql.conf.d /opt/docker/master/mysql.conf.d
    
$ docker run --name master \\
    -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123455 \\
    -v /opt/docker/master/mysql:/var/lib/mysql \\
    -v /opt/docker/master/my.cnf:/etc/mysql/my.cnf \\
    -v /opt/docker/master/conf.d:/etc/mysql/conf.d \\
    -v /opt/docker/master/mysql.conf.d:/etc/mysql/mysql.conf.d \\
    -d mysql:latest
    
    docker run --name slave \\
    -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123455 \\
    -v /opt/docker/slave/mysql:/var/lib/mysql \\
    -v /opt/docker/slave/conf.d:/etc/mysql/conf.d \\
    -v /opt/docker/slave/mysql.conf.d:/etc/mysql/mysql.conf.d \\
    -d mysql:latest

vim /etc/mysql/mysql.conf.d/mysqld.cnf,看第84行:确认log_bin和server-id已经取消注释,保持从站和主站的server-id不同

这里就可以修改配置了。

改完之后,创建正式的mysql容器

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123455

-v /usr/local/mysql/data:/var/lib/mysql

-v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf

-v /usr/local/mysql/conf.d:/etc/mysql/conf.d

-v /usr/local/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d

-d mysql:5.7

如果my.cnf 是完整的配置,这里不需要映射conf.d和mysql.conf.d这二个目录

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123455

-v /usr/local/mysql/data:/var/lib/mysql

-v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf

-d mysql:5.7

完成后 进入容器

docker exec -it ecMysql bash

登录数据库

mysql -u root -p

mysql -u root -h 127.0.0.1 -P 3306 -p

docker cp master:/etc/mysql/my.cnf /usr/local/mysql/master/my.cnf

docker cp /usr/local/mysql/master/my.cnf master:/etc/mysql/my.cnf

docker cp slave:/etc/mysql/my.cnf /usr/local/slave/master/my.cnf

docker cp /usr/local/slave/master/my.cnf slave:/etc/mysql/my.cnf

docker cp master:/etc/mysql/my.cnf d://my1.cnf

docker cp d://my1.cnf master:/etc/mysql/my.cnf

docker cp slave:/etc/mysql/my.cnf d://my2.cnf

docker cp d://my2.cnf slave:/etc/mysql/my.cnf

创建用户

CREATE USER \'jarry\' @\'%\' IDENTIFIED WITH mysql_native_password BY \'jarry\';

CREATE USER \'jarry\'@\'localhost\' IDENTIFIED BY \'jarry\';

查看MYSQL数据库中所有用户
SELECT DISTINCT CONCAT(\'User: \'\'\',user,\'\'\'@\'\'\',host,\'\'\';\') AS query FROM mysql.user;

查看数据库中具体某个用户的权限
show grants for \'cactiuser\'@\'%\';

select * from mysql.user where user=\'cactiuser\' \\G

查看user表结构 需要具体的项可结合表结构来查询
desc mysql.user;

CREATE USER \'jarry\'@\'%\' IDENTIFIED BY \'jarry\';
GRANT REPLICATION SLAVE ON *.* TO \'jarry\'@\'%\';
show grants for \'jarry\'@\'%\';

主站查看MASTER_LOG_FILE

show master status;

从站配置

stop slave;
CHANGE MASTER TO 
MASTER_HOST=\'192.168.2.101\',
MASTER_PORT=3306,
MASTER_USER=\'root\',
MASTER_PASSWORD=\'root\',
MASTER_LOG_FILE=\'binlog.000002\',
MASTER_LOG_POS=155;
start slave;
show slave status\\G;

CHANGE MASTER TO 
MASTER_HOST=\'192.168.2.101\',
MASTER_PORT=3306,
MASTER_USER=\'BACKUP\',
MASTER_PASSWORD=\'BACKUP\';
start slave;

创建数据库

create database test1 default character set utf8;

Linux端

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
更新apt包索引:
$ sudo apt-get update
安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再更新一下apt包索引:
$ sudo apt-get update
安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce
验证docker
查看docker服务是否启动:
$ systemctl status docker

若未启动,则启动docker服务:
$ sudo systemctl start docker
经典的hello world:
$ sudo docker run hello-world

有以上输出,表示docker安装成功.

安装mysql

设置镜像

为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。

(我装的时候目录下没有这个文件需要自己添加)

vi /etc/docker/daemon.json

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

修改保存后重启 Docker 以使配置生效。

下载mysql

docker pull mysql

创建镜像-这里和windows一致 目前wsl无法使用独立守护

先创建一个镜像目录与my.cnf文件

mkdir -p /opt/docker_v/mysql/conf

touch my.cnf

docker run -p 3306:3306 --name mysql

-v /opt/docker_v/mysql/conf:/etc/mysql/conf.d

-e MYSQL_ROOT_PASSWORD=123456 -d mysql

-----这里出现问题 还是使用for windows

//在wsl端
export DOCKER_HOST=tcp://localhost:2375

docker设置端口2375

转载SYT_Boss 最后发布于2019-02-25 18:13:44 阅读数 1524 收藏

一、系统环境:

在Windows 7 64位上,采用Vmware workstation 12安装了CenOS7.5 64位。

二、问题

在CentOS7.5里安装了Docker,启动docker服务,输入docker version,则出现错误信息:

Cannot connect to the Docker datemon at tcp://0.0.0.0:2375 is the docker daemon runing?

三、解决过程

1、配置DOCKER_HOST

​ sudo vim /etc/profile.d/docker.sh

​ 添加下面内容:

​ export DOCKER_HOST=tcp://localhost:2375

2、应用

​ 1)、source /etc/profile

​ 2)、source /etc/bashrc

3、配置启动文件

​ 1)、sudo vim /lib/systemd/system/docker.service

​ 2)、修改下面语句

​ ExecStart=/usr/bin/dockerd -H unix://

​ 修改为:

​ ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654

4、重载配置和重启

​ 1)、sudo systemctl daemon-reload

​ 2)、sudo systemctl restart docker.service

5、查看

​ docker version

​ 说明已经正常。

windows10 下 子系统(管理员bash)

Install packages to allow apt to use a repository over HTTPS

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

Add Docker\'s official GPG key

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Set up the repository

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Update source lists

sudo apt-get update

Install Docker

sudo apt-get install docker-ce

以上是关于Linux(wsl)安装docker和mysql主从搭建的主要内容,如果未能解决你的问题,请参考以下文章

在Windows 10中启动WSL2 并安装Linux( Ubuntu 为例)并运行docker

Windows安装WSL2和docker

Windows下的Linux子系统安装,WSL 2下配置docker

Windows 11 安装 Docker Desktop

wsl2 debian安装docker

WSL2 安装TB(thingsboard系统,基于java的iot开源平台)环境