1. 程式人生 > >Docker建立Mysql容器並通過命令列連線到容器

Docker建立Mysql容器並通過命令列連線到容器

拉取網易蜂巢的mysql-server:5.6

docker pull hub.c.163.com/nce2/mysql:5.6

建立mysql5.6容器 1master+3個slave

docker run --name mysql-master -d -P hub.c.163.com/nce2/mysql:5.6
docker run --name mysql-slave1 -d -P hub.c.163.com/nce2/mysql:5.6
docker run --name mysql-slave2 -d -P hub.c.163.com/nce2/mysql:5.6
docker run --
name mysql-slave3 -d -P hub.c.163.com/nce2/mysql:5.6

驗證容器狀態

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS               NAMES
907bbbf25d25        hub.c.163.com/nce2/mysql:5.6   "/run.sh"           5
minutes ago Up 5 minutes 3306/tcp mysql-slave3 a81df6c86808 hub.c.163.com/nce2/mysql:5.6 "/run.sh" 5 minutes ago Up 5 minutes 3306/tcp mysql-slave2 375eabd4c598 hub.c.163.com/nce2/mysql:5.6 "/run.sh" 5 minutes ago Up 5
minutes 3306/tcp mysql-slave1 1651d1cab219 hub.c.163.com/nce2/mysql:5.6 "/run.sh" 14 minutes ago Up 14 minutes 3306/tcp mysql-master

通過主機命令列進入master容器

docker exec -it mysql-master bash
[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#

在master中建立一個數據庫test_docker

[email protected]:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.02 sec)

mysql> create database test_docker;
Query OK, 1 row affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
| test_docker        |
+--------------------+
6 rows in set (0.00 sec)

在slave1中建立一個數據庫test_docker

[[email protected] ~]# docker exec -it mysql-slave bash
Error response from daemon: No such container: mysql-slave
[[email protected] ~]# docker exec -it mysql-slave1 bash
[email protected]375eabd4c598:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

通過以上的資訊說明master與slave是資料隔離的,
所以我們可以通過docker建立N個mysql容器,
然後就能以很小的代價就能學習《高可用MySQL》中的資料模型 再也不用發愁機器不夠用。

後續操作 – 登入到master容器

[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#

怎麼檢視容器的作業系統環境
一般就是

uname -a
cat /etc/pro
cat /etc/lsb-release

很幸運我們的容器是ubuntu14.04

[email protected]:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

但是執行 apt-get install時候卻什麼也裝不了
需要更改

cd /etc/apt/

沒有 vi vim ee 編輯器 只好追加內容到 sources.list

 echo deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse >> sources.list

然後 更新源

apt-get update
apt-get install vim

然後通過vim把sources.list檔案的前兩行刪除掉 再重新update一下。

apt-get update

安裝一個網路工具獲取ip

apt-get install net-tools

獲取到master的ip地址

root@1651d1cab219:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12633 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:34197557 (34.1 MB)  TX bytes:897732 (897.7 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2212 (2.2 KB)  TX bytes:2212 (2.2 KB)

slave也需要這麼做

還有一種方法
可以建立Dockerfile依賴mysql映象建立一個新的映象。
上訴命令通過RUN來執行建立的新容器會有安裝的軟體。

最後通過slave的docker連線到master的容器mysql伺服器上

master的伺服器mysql賬號root賦值許可權

mysql> grant all privileges on *.* to [email protected]'%' identified by '';
Query OK, 0 rows affected (0.02 sec)

mysql>  flush privileges;
Query OK, 0 rows affected (0.02 sec)

slave伺服器執行如下命令

[[email protected] ~]# mysql -uroot -p -h 172.17.0.2
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

在master上將test_docker資料庫刪除,看slave的終端是否也不顯示已刪除的庫

master操作

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
| test_docker        |
+--------------------+
6 rows in set (0.00 sec)

mysql> drop database test_docker;
Query OK, 0 rows affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

slave操作

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MySQL [(none)]>

相關推薦

Docker建立Mysql容器通過命令連線容器

拉取網易蜂巢的mysql-server:5.6 docker pull hub.c.163.com/nce2/mysql:5.6 建立mysql5.6容器 1master+3個slave docker run --name mysql-

通過composer 安裝 tp5 通過命令建立一個控制器

首先開啟命令列將檔案目錄切換到要安裝Tp5的目錄下執行composer create-project topthink/think tp5 dev-master --prefer-dist得到此時TP5就安裝成功了 將目錄切換到TP5目錄裡執行 PHP think make:

docker建立nginx映象 cmd命令啟動

開發十年,就只剩下這套架構體系了! >>>   

Docker建立MySQL映象併成功進行遠端連線

1.安裝 1.1 拉取映象 docker pull mysql 拉取成功可以驗證一下 docker images 1.2 建立並啟動一個mysql容器 docker run --name ly-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d

CentOS通過命令連線無線

1.關閉NetworkManager服務,開啟network服務,以root許可權執行   #chkconfig --level 2345 NetworkManager off    #chkconfig --level 2345 network on   #service

mysql通過命令建立資料庫

1.語法: CREATE DATABASE IF NOT EXISTS 資料庫名稱 DEFAULT CHARSET 預設編碼集 COLLATE 校對規則 2.語法解析: IF NOT EXISTS:如果該資料庫不存在則建立,存在則不建立,避免了建立資料庫的錯誤 DEFAULT CHARSET

mysql通過命令建立

mysql通過命令列建立表 1.語法: CREATE TABLE IF NOT EXISTS 表名稱 ( 欄位1  [AS 別名]  欄位型別  [約束條件] [DEFAULT 預設值] [COMMENT 註釋], 欄位2  [AS 別名]&nbs

mysql通過命令刪除資料庫

mysql通過命令列刪除資料庫 1.語法: DROP DATABASE IF EXISTS 資料庫名稱; 2.語法解析: IF EXISTS:判斷資料庫是否存在,如果存在則刪除對應的資料庫,如果不存在避免了產生執行刪除的錯誤 3.示例: # 刪除資料庫名稱為demo1的資料庫 DRO

OA信用盤 殺大賠小mysql通過命令刪除資料庫

mysql通過命令列刪除資料庫  OA信用盤 殺大賠小【地瓜原始碼論壇diguaym.com】聯絡方式:QQ:2152876294 1.語法: DROP DATABASE IF EXISTS 資料庫名稱; 2.語法解析: IF EXISTS:判斷資料庫是否存在,如果存在則刪除對應的資料庫,如

Docker 建立 mysql 容器

docker -v Docker version 18.06.1-ce, build e68fc7a   拉取 docker mysql 最新的映象 docker pull mysql   Using default tag: lates

Docker建立映象檔案容器中執行

1.如何建立映象檔案 首先找到Docker ToolBox安裝的路徑,在路徑下直接新建Dockerfile檔案 在Dockerfile檔案裡寫入的內容為: FROM docker/whalesay:latest RUN apt-get -y update && apt-get inst

通過命令建立Oracle的使用者

 CREATE USER acaizi             IDENTIFIED BY admin              DEFAULT TABLESPACE 表空間名             QUOTA UNLIMITED ON 表空間名 ;GRANT CONNEC

通過go語言執行可執行程式獲得命令輸出的方法

首先,通過go語言執行可執行程式需要用到os/exec包 package exec import "os/exec" exec包執行外部命令 步驟: 寫一個go語言小程式並通過go build命令來編譯成可執行檔案p

Docker建立MySQL容器

本文目的是建立一個MySQL的image,並且在新創建出來的容器裡自動啟動MySQL服務接受外部連線步驟:1. 首先建立一個目錄並在目錄下建立一個Dockerfile,檔案內容如下FROM centos:centos6 MAINTAINER Fanbin Kong "[ema

LINUX通過命令操作MYSQL

啟動:service mysqld start; 進入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出資料庫:show databases; 建立資料庫:create databa

命令連線 MySQL 資料庫進行授權

登入 MYSQL 資料庫 在 win10 ,需要開啟管理員的命令列視窗(Windows PowerShell(管理員)A),沒有管理員許可權會導致登入失敗。 執行命令: mysql -hloc

Mac如何通過命令Mysql操作資料庫

連線資料庫 mysql -u '資料庫名' -p enter '資料庫密碼' 建立一個名字為NickYang資料庫 create database NickYang; 修改資料庫編碼 alter database NickYang ch

怎樣通過命令設定mysql資料庫密碼

1.先進入MySQL命令列客戶端,輸入:flush privileges;  重新讀授權表,回車; 2.輸入: use mysql  使用mysql 這個表, 3.update user set password=password('mypwd') where user='

進入docker容器執行命令的的3中方法

hour -a cas from 自動退出 gin ron tac net 進入docker容器並執行命令的的3中方法 docker exec nsenter docker attach "container" 建議使用nsenter, exec有時候

transfer.sh:通過命令簡單的建立檔案分享

開發十年,就只剩下這套架構體系了! >>>