Docker笔记
一、安装Docker (基于Centos)
-
卸载历史版本Docker
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
设置Docker仓库
- 官方地址
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
- 阿里云
sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装 Docker
- 安装默认最新版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 安装指定版本
sudo yum install docker-ce-[VERSION_STRING] docker-ce-cli-[VERSION_STRING] containerd.io docker-compose-plugin-[VERSION_STRING]
-
启动Docker
sudo systemctl start docker
-
设置开机自动启动
sudo systemctl enable docker
-
设置Docker镜像加速【阿里云镜像加速】
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://nwmgbucp.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
二、Docker常用命令
-
docker 镜像管理
-
搜索镜像
docker search [镜像名称]
-
拉取镜像
docker pull [镜像名称]
-
-
docker容器管理
-
创建并启动容器
docker run -d --name [容器名称] -p 宿主机器端口:容器端口 -v 宿主机目录:容器内部目录 [镜像ID或镜像名称] #eg 创建一个redis容器 docker run -d --name redis -p 6379:6379 -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /mydata/redis/data:/data redis-server /etc/redis/redis.conf redis
docker run 参数介绍
-d : 让容器后台运行
-P: 随机端口映射
-p: 指定宿主机与容器的端口映射
-v: 设置容器的目录【文件】映射
-e: 设置环境变量
–name:为容器设置名称
–net: 设置容器的网络
-
创建容器【不启动】
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
-
启动容器【容器已存在】
docker start [容器ID或容器名称]
-
停止容器
docker stop [容器ID或容器名称]
-
更改容器
docker update [容器ID或容器名称] #eg docker update redis --restart=always
-
查看容器日志
docker logs [容器ID或容器名称] #eg 实时查看logs docker logs -f redis
-
进入容器内部
#eg 进入容器内部的bash docker exec -it [容器ID或容器名称] /bin/bash
-
三、Docker安装并配置MySQL5.7 主从服务
- 拉取镜像
docker pull mysql:5.7
- docker 安装mysql 主节点
docker run -d -p 3306:3306 -v /mydata/mysql/conf:/etc/mysql/conf.d -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/logs:logs -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql:5.7
- docker 安装mysql 从节点
docker run -d -p 3307:3306 -v /mydata/mysql2/conf:/etc/mysql/conf.d -v /mydata/mysql2/data:/var/lib/mysql -v /mydata/mysql2/logs:logs -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave mysql:5.7
配置MySQL主服务配置
vi /mydata/mysql/conf/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启二进制日志
log-bin=mysql-bin
#设置服务id,不能重复
server-id=1
#作为从节点的时候,有数据库写入操作时也要更新二进制文件
log-slave-updates=1
#开启gtid模式
gtid-mode=on
#强制gtid一致性,开启后对特定的create table不被支持
enforce-gtid-consistency = on
#设置自增ID
auto_increment_increment=2
auto_increment_offset=1
#每次写入立即同步进磁盘
sync_binlog=1
#保证二进制日志和innodb储存引擎数据保持同步
innodb_support_xa=1
#设置binlog格式
binlog_format=mixed
#同步数据库
#binlog-do-db=
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
配置MySQL从服务器配置
vi /mydata/mysql2/conf/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启二进制日志
log-bin=mysql-bin
#设置服务id,不能重复
server-id=2
#作为从节点的时候,有数据库写入操作时也要更新二进制文件
log-slave-updates=1
#开启gtid模式
gtid-mode=on
#强制gtid一致性,开启后对特定的create table不被支持
enforce-gtid-consistency = on
#设置自增ID
auto_increment_increment=2
auto_increment_offset=2
#每次写入立即同步进磁盘
sync_binlog=1
#保证二进制日志和innodb储存引擎数据保持同步
innodb_support_xa=1
#设置binlog格式
binlog_format=mixed
#同步数据库
#binlog-do-db=
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
- MySQL 主服务配置
# 创建用户
create user 'slave'@'%' identified WITH mysql_native_password BY 'slave';
# 授予权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
flush PRIVILEGES;
#查看主库的当前Binlog日记文件及位置
show master status;
# 如果此处为空,请检查配置文件是否配置log-bin
- MYSQL从服务器配置
change master to master_host='服务器IP',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos='154';
配置双主双从根据相应的MySQL配置在相应服务上根据图上语句设置主服务器相应配置
- docker停止并删除所有MySQL镜像
docker ps -a|grep mysql | awk ' {print $1}' | xargs docker stop && docker ps -a |grep mysql | awk ' {print $1}' | xargs docker rm
- docke删除所有镜像
docker ps -a |grep mysql | awk ' {print $1}' | xargs docker rm
三、Docker安装Redis
-
拉取镜像
docker pull redis
-
配置Redis数据目录以及配置文件
mkdir -p /mydata/redis/{conf,data} vim /mydata/redis/conf/redis.conf # 设置Redis持久化 appendonly yes # 设置redis密码 requirepass 1234
-
安装Redis
docker run -p 6379:6379 --name redis -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes