docker疑问总结

什么是docker?docker解决什么问题?

答:docker是为开发者和系统管理员,在容器中开发、部署、运行程序的平台(抽象概念,可以理解为有了这个平台,docker命令才能用)。使用linux容器去部署程应用序成为集装箱化。
解决:便捷安装;节约计算资源(内存、cpu)

docker有那些核心概念?

答:容器、镜像

镜像和容器

  1. 镜像是一个可执行包,包包含运行一个应用程序所需要的所有,–代码、运行时间、环境变量、配置文件。通过运行一个镜像启动一个容器
  2. 容器是一个运行时镜像的实例。

什么是集装箱化?

  1. 灵活、轻量级、可交替的、可移植的、可称量的、可叠起堆放的
  2. 比如以前的码头装载货物五花八门小零件,不易装已不易卸。就如同我们在发布程序的时候要在服务器装环境以及各种依赖。要装几十上千台服务器呢?这时候把一套已经配置好的环境,直接将dockerfile文件分发,运行则会根据文件构建出容器所需的镜像(或者是打包成一个镜像,有些直接把应用程序的代码都一起打包成镜像,直接上服务器),而且保证各个环境是一样的。

容器和虚拟机的区别?

  1. 一个容器运行是在linux上,与其他容器是共享主机的内核,他运行一个离散的过程,比其他可执行文件更轻,更不耗内存
  2. 一个虚拟机(VM)运行一个完整的“游客”操作系统。提供比应用程序所需的更过资源。

用docker来开发需要了解那些知识点?

答:了解基本概念;最最重要的是dockerfile的编写。dockerfile文档

如何编写一个dockerfile来运行yii2?

通过docker run运行的时候会自动到仓库搜索

$ docker run -p 6389:6379 --name redis-master -v /usr/local/redis:/etc/redis/ -d redis redis-server /etc/redis/redis-6389.conf
-d 启动守护进程,程序后台运行
-p 6389:6379 : 将主机的6389端口,映射到容器6379端口,用于外网访问容器
--name redis :容器名字
-v /usr/local/redis/:/etc/redis :将主机中配置文件挂载到容器中
-d redis 镜像名字(先从本地获取,再从仓库)
redis-server /ect/redis/redis--6389.conf 指定配置文件启动redis服务

docker 常用命令

docker ps
docker rm redis-master
docker run
docker exec -it redis-master bash 进入到容器

redis主从复制

  1. 主从复制是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点
  2. 默认情况下,每台redis服务器都是主节点,且一个主节点可以有多个从节点(或者没有从节点),但一个从节点只能有一个主节点

主从复制的作用

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现为题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务冗余
  3. 负载均衡(读写分离):在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供服务(即写redis数据时应用连接主节点,读分担服务器负载,尤其是在写少读多的场景下,通过多个节点分担读负载,可以大大提高redis服务器的并发量)
  4. 高可用即使:除了伤处作用外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础。

启动主从服务

1.进入从机
docker exec -it redis-slave bash
SLAVEOF 47.98.147.49 6389 #指定主机是谁
INFO replication #查看主或从机关系

keys * 不能乱用,key多的时候容易卡爆redis 是on级别的——遍历
  1. 配置文件
    在从服务的配置文件中加入:slaveof
  2. 启动命令
    redis-server 启动命令后加入 --slaveof
  3. 客服端命令
    redis服务器启动后,直接通过客户端执行命令:slaveof 则该redis实例成为从节点。通过info replication 命令可以看到复制的一些参数信息。
    修改配置,把redis保护模式关掉,测试阶段默认允许所有的客户端,不设置密码访问

主从复制原理

  1. 主从复制过程大体可以分为3个阶段,连接建立阶段(即准备阶段),数据同步阶段,命令传播阶段
  2. 在从节点执行slaveof 命令后,复制过程便开始运作,复制过程大致分成6个过程,如下: