1. 程式人生 > 實用技巧 >Linux(wsl)安裝docker和mysql主從搭建

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