尚硅谷docker学习笔记整理
docker操作
systemctl start docker 启动docker
systemctl stop docker 停止docker
systemctl restart docker 重启docker
systemctl status docker 查看docker状态
systemctl enable docker 设置开机启动
docker info 查看docker概要信息
docker --help 查看docker总体帮助文档
docker 具体命令 --help 查看docker具体命令帮助文档
docker system df 查看docker镜像,容器,数据卷所占据的空间
镜像操作
docker images 查看所有镜像
docker rmi [镜像] 删除镜像
docker pull [镜像:版本号] 拉取镜像
docker commit -m=“ifconfig” -a=“rx” [容器id] rx/my:1.2 生成本地容器镜像
容器操作
docker run -p 80:80 -v /主机目录:/容器目录 -d [镜像]:[版本号] 启动容器
docker exec -it nginx /bin/bash 进入nginx容器
docker restart [容器] 重启容器
docker stop [容器] 停止容器
docker start [容器] 启动容器
docker ps -a 查看所有docker容器
docker logs [容器] 查看容器日志
docker top 容器 查看容器内运行的进程
docker inspect 容器 查看容器内部运行细节
docker rm 容器 删除容器
docker rm -f $(docker ps -a -q) 一次性删除多个容器
docker kill 容器 强制停止容器
docker cp /www/runoob 96f7f14e99ab:/www 将主机内容拷贝到容器
docker cp 96f7f14e99ab:/www /tmp/ 将容器内容拷贝到主机
docker export 容器ID > 文件名.tar.gz
docker export 49219a6d957d > aa.tar.gz 将容器导出
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat aa.tar.gz | docker import - rx/amysql:1.1 导入容器
推送镜像到私服仓库
1、下载本地私有仓库 docker pull registry
2、启动私服仓库 docker run -d -p 5000:5000 -v /rx/myregistry:/tmp/registry --privileged=true registry
3、修改本地镜像格式,使之可以提交到私有仓库
docker tag rx/my:1.2 192.168.204.151:5000/rx/my:1.2
4、 编辑阿里云镜像加速配置文件
vim /etc/docker/daemon.json
{
“registry-mirrors”: [“https://wnaovsqp.mirror.aliyuncs.com”],
“insecure-registries”:[“192.168.204.151:5000”] --目标仓库地址和端口号
}
5、推送镜像到私服仓库
docker push 192.168.204.151:5000/rx/my:1.2
6、查看私服仓库已有镜像
curl -XGET http://192.168.204.151:5000/v2/_catalog
7、从私有仓库下载镜像
docker pull 192.168.204.151:5000/rx/my:1.2
–推送到阿里云镜像仓库,直接参考阿里云容器服务文档
安装mysql
sudo docker pull mysql:5.7
sudo docker run -p 3306:3306 --name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
mysql主从复制
1、新建主服务器容器实例3307
docker run -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、进入/mydata/mysql-master/conf目录下新建my.cnf
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、修改完配置后重启master实例
docker restart mysql-master
4、进入mysql-master容器
docker exec -it mysql-master /bin/bash
mysql -uroot -proot
5、master容器实例内创建数据同步用户
CREATE USER ‘slave’@’%’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@’%’;
6、新建从服务器实例3308
docker run -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
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、在主数据库中查看主从同步状态
show master status;
10、进入mysql-slave容器
docker exec -it mysql-slave /bin/bash
mysql -uroot -proot
11、在从数据库中配置主从复制
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;
12、在从数据库中查看主从同步状态
show slave status \G;
13、在从数据库中开启主从同步状态
start slave;