docker 命令
1.查看版本
docker -v
11.重启nginx
service nginx reload
2.查看可以安装的PHP工具
docker search php
3.下载想要安装的工具
docker pull phpmyadmin 默认最新
docker pull redis:6.0.8 带版本号
4.安装phpmyadmin,端口9998
//后台守护式启动
docker run -d --name phpmyadmin -p 9998:80 library/phpmyadmin
//前台交互式启动
docker run -it redis:6.0.8
5.查看容器运行情况
docker ps
5-1显示所有容器
docker ps -a
5-2修改容器名称
docker rename abc u2
6.查看容器日志
docker logs 容器ID号
7.开启-停止-杀死容器
docker stop 容器ID号
docker kill 容器ID号
docker start 容器ID号
8.列出本机上的安装的镜像
docker images
9.启动容器随机分配端口
docker run -d -P phpmyadmin
10.指定访问端口1234到容器
docker run -d -p 0.0.0.0:1234:80 phpmyadmin
11.删除容器
# 删除容器 docker rm 容器ID # 删除所有容器 docker rm $(docker ps -a)
11.B删除镜像文件
#docker rmi 镜像ID
docker rmi 52b67ab29b74
12.查看镜像容器占有空间
docker system df
13.使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
参数说明: -i:交互式操作 -t:终端 docker run -it centos /bin/bash
14.查看容器内运行进程
docker top 容器ID
15.进入容器
#exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止.
docker exec -it 容器ID /bin/bash
#attach是直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
docker attach 容器ID,#教程是直接进入ubuntu进入的,在测试上进入一直卡着,后期继续了解清楚
16.复制容器内文件
docker cp 容器id:容器内路径 目的主机路径 docker cp 614d18616b22:/var/www/html /data #这里复制的是wordpress目录到宿主机服务器的/data目录
17.备份和还原整个容器
1.docker export 容器ID > wordpress.tar docker export 614d18616b22 > wordpress.tar
#导入备份文件,还原容器
2.cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat wordpress.tar | docker import - test/t1:v1
18.容器中添加所需功能vim编辑器
#先更新我们的包管理工具 apt-get update #然后安装我们需要的vim apt-get install vim
19.commit提交创建新容器
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像:[标签名]
docker commit -m="vim cmd add ok" -a="read" 1614b741a08a newiso/test:v1.0
20.啊里云镜像仓库
1. 登录阿里云Docker Registry $ docker login --username=2751*****@qq.com registry.cn-hangzhou.aliyuncs.com 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。 您可以在访问凭证页面修改凭证密码。 2. 从Registry中拉取镜像 $ docker pull registry.cn-hangzhou.aliyuncs.com/read2022/itmes_20220615:[镜像版本号] 3. 将镜像推送到Registry $ docker login --username=2751*****@qq.com registry.cn-hangzhou.aliyuncs.com $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/read2022/itmes_20220615:[镜像版本号] $ docker push registry.cn-hangzhou.aliyuncs.com/read2022/itmes_20220615:[镜像版本号]
21.宿主机和容器共享数据
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 docker run -it --privileged=true -v /data:/var/www/test --name=pp centos #只适用于系统之内共享
docker run -it --privileged=true --volumes-from u1 --name u2 centos #继承父类容器的共享
22.Mysql主从复制
1.新建主从服务
docker run -d -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2.新建my.cnf
cd /mydata/mysql-master/conf
vim my.cnf
[mysqld]
## 设置 server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小 (事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式 (mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或反指定类型的错误,避免slave端复制中段。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
3.重启配置
docker restart mysql-master
4.进入mysql-master容器
docker exec -it mysql-master /bin/bash
mysql -uroot -proot
mysql> show databases;
5.master容器实例内创建数据同步用户
CREATE USER 'slave'@'%'IDENTIFIED BY '123456'; //建立用户
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%'; //授权
6.新建从服务器3308
docker run -d -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
7.进入/mydata/mysql-slave/conf 目录新建my.cnf
新建my.cnf
cd /mydata/mysql-slave/conf
vim my.cnf
[mysqld]
## 设置 server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小 (事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式 (mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中段。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中断日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读 (具有super权限的用户除外)
read_only=1
8.修改完成配置后重启slave实例
docker restart mysql-slave
9.在主数据库中查看主从同步状态
mysql>show master status;
10-A.查看容器IP
docker inspect 容器ID | grep IPAddress
10.进入mysql-slave容器
docker exec -it mysql-slave /bin/bash
mysql -uroot -proot
mysql> show databases;
change master to master_host='宿主机ip',master_user='slave',master_password='123456',master_port=3307,
master_log_file='mall-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;
#master_host:主数据库的IP地址;
#master_port:主数据库的运行端口;
#master_user:在主数据库创建的用于同步数据的用户账号;
#master_password:在主数据库创建的用于同步数据的用户密码;
#master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
#master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
#master_connect_retry:连接失败重试的时间间隔,单位为秒.
12.在从数据库中配置主从复制
mysql>show slave status \G;
13.在从数据库中开启主从同步
mysql>start slave;
14.查看从数据库状态发现已经同步
mysql>show slave status \G;
#Slave_IO_Running: Connecting #Yes为正常
#Slave_SQL_Running: Yes
15.主从复制测试
#主机新建库-使用库-新建表-插入数据,ok
mysql>create database db001;
mysql>use db01;
mysql>create table t1 (id int,name varchar(20));
mysql>insert into t1 values(1,'z3');
mysql>select * from t1
从机使用库-查看记录,ok
mysql>use db01;
select * from t1;