What is docker?
Docker is a world's leading software containerization platform!
Linux系统的一些基本操作
(1) ctrl c: 取消命令,并且换行
(2) ctrl u: 清空本行命令
(3) tab键:补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
(4) ls: 列出当前目录下所有文件,蓝色是文件夹,白色是普通文件,绿色的是可执行文件
(5) pwd: 显示当前路径
(6) cd XXX: 进入XXX目录下, cd .. 返回上层目录
(7) cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如../dir_c/a.txt,表示上层目录下的dir_c文件夹下的文件a.txt
(8) mkdir XXX: 创建目录XXX
(9) rm XXX: 删除普通文件; rm XXX -r: 删除文件夹
(10) mv XXX YYY: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令
(11) touch XXX:创建一个文件
(12) cat XXX:展示文件XXX中的内容
(13) 复制文本:windows/Linux下:Ctrl + insert,Mac下:command + c
(14) 粘贴文本:windows/Linux下:Shift + insert,Mac下:command + v
Docker安装以及启动
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
在centos命令行中删除旧版本的docker,如果没有安装则会报告没有安装。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装软件包,设置存储库。
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装最新版本docker,一直按y下一步即可。
sudo systemctl start docker
启动docker
sudo docker run hello-world
通过运行映像来验证Docker是否安装成功。
搭建mysql在docker中的环境(镜像)
docker search mysql
查询mysql镜像,可以先配置镜像加速器,进入阿里云复制即可。
docker pull mysql
默认default是latest‘
docker image ls
查看镜像库,看看是否下载成功
搭建mysql在docker中的环境(容器)
linux创建文件夹:/usr/local/software/mysql/3306
此处3306作为我们的主机,我们需要在3306下创建conf和data文件夹,并在conf文件夹中导入my.cnf配置文件
my.cnf:
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
default_authentication_plugin=mysql_native_password
# Custom config should go here
!includedir /etc/mysql/conf.d/
server_id=200 #服务器id
log_bin=mysql-bin #binlog名称
binlog_format=row #binlog的格式
我们可以通过pwd命令查看当前路径,也可以通过tree命令查看当前路径的细节分支
tree命令的安装方法:
yum -y install tree
由于my.cnf文件需要修改,因此需要进入vim进行修改
vim my.cnf
创建mysql_3306的容器
docker run命令
docker run 命令
-i:以交互模式运行容器
-t:为容器重新分配一个伪输入终端
--name :容器名称
--privileged: 设置容器公开权限(默认为true)
-p :映射端口 linux端口: 容器内置端口(mysql默认端口为3306)
-v : linux挂载文件夹/文件和容器内路径的映射
-e: 容器的环境变量(设置mysql默认用户名&密码)
-d: 后台运行容器,并返回容器ID
docker run -it \
--name mysql_3306 \
--privileged \
-p 3306:3306 \
-v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
查看容器,可通过
docker ps
和
docker ps -a
来检验容器run是否成功
在容器中运行mysql客户端
mysql -u用户名 -p密码
开放指定端口和重新加载防火墙
//开放指定端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//重新加载防火墙
firewall-cmd --reload
//查看开放的端口号,配置好从机后可以会一起显示
firewall-cmd --zone=public --list-ports
在navicat中连接创建的容器
主机地址写ip config中的ip地址
mysql的从配置
在mysql容器中查看binlog是否开启
show variables LIKE ‘log_%’
log_bin状态为ON为开启
在目录中查看日志文件
cd /var/lib/mysql
ls
建立从用户
//创建用户slave
create user 'slave'@'%' indentified with mysql_native_password by '123456';
//给用户授权
grant repulication slave, replication client on *.* to 'slave'@'%';
//应用授权
flush privileges;
查询master状态
show master status;
可查看binlog文件和日志文件的起始位置
推出容器查看master容器内部地址
docker ispect mysql_3306 |grep IPA
按之前的顺序新建从容器的conf和data文件夹,复制my.cnf文件到donf中
在my.cnf文件中修改内容
server_id=210
log_bin=mysql-slave01-bin
relay_log=wnhz-relay-bin
read_only=1
创建运行从容器
docker run -it \
--name mysql_3310 \
--privileged \
-p 3310:3306 \
-v /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
创建成功后会显示从容器的id
进入从容器修改从服务器与master的关联
change master to
master_host='之前查询到的master的内部地址',
master_user='slave',
master_password='master配置的密码',
MASTER_LOG_FILE='master的logbin文件名',
MASTER_LOG_POS=master日志文件的起始位置;
开启slave
start slave;
查询slave状态
show slave status \G;