上海骏域网站建设专家从化企业网站建设

news/2025/9/27 0:47:05/文章来源:
上海骏域网站建设专家,从化企业网站建设,wordpress目录列表,网络优化的基本方法俗话说“好记性不如烂笔头”#xff0c;编程的海洋如此的浩大#xff0c;养成做笔记的习惯是成功的一步#xff01; 此笔记主要是antlr4.13版本的笔记#xff0c;并且笔记都是博主自己一字一字编写和记录#xff0c;有错误的地方欢迎大家指正。 一、基础概念#xff1a;…俗话说“好记性不如烂笔头”编程的海洋如此的浩大养成做笔记的习惯是成功的一步 此笔记主要是antlr4.13版本的笔记并且笔记都是博主自己一字一字编写和记录有错误的地方欢迎大家指正。 一、基础概念 1、docker是基于Go语言实现的开源容器项目。诞生于2013年年初最初发起者是dotCloud公司。docker开源后受到业界广泛的关注与参与目前已有80 多个相关开源组件项目逐渐形成了围绕docker容器的完整生态体系。 官方网站https://www.docker.com/ 官方文档https://docs.docker.com/ 官方仓库https://hub.docker.com/ 账号密码cat4416/guowenjie 邮箱565335545qq.com 中文学习教程https://www.runoob.com/docker/docker-tutorial.html 源代码https://github.com/docker 2、docker在开发和运维中的优势 1更快速的交付和部署。 2更高效的资源利用。 3更轻松的迁移和扩展。 4更简单的更新管理。 3、docker的三大核心概念 1docker镜像类似于虚拟机镜像是一个只读的模板。类似于java类文件。 2docker容器是基于镜像创建的的应用运行实例。类似于生成的java对象。 3docker仓库类似于代码仓库用于集中存放镜像文件的仓库中心。 4、docker的特点 1环境的标准化。 2隔离性。 3可以快速创建和销户。 5、数据卷是一个可供容器使用的特殊目录它将主机操作系统目录直接映射进容器类似于linux的mount行为。 数据卷可以在容器之间共享和重用并且修改后会立马生效数据卷的更新不会影响镜像。 6、Dockerfile是由一行行指令语句组成指令又分为配置指令和操作指令。 7、容器与应用是同生共死的关系启动容器就是启动主进程当容器中指定的应用终结时容器也会自动停止此时容器处于stopped状态。 故需要注意有使用伪终端交互时不能使用exit命令终止终端交互应使用Ctrlpq快捷键退出方式。 8、禁止在docker环境下使用sudo命令来提升权限因为sudo命令会在当前进程下创建子进程来执行对应的命令。 与docker容器只有一个主进程的要求相背离并且宿主机向改容器发送信号量时变为被sudo进程收了而不是sudo后面对应的命令。 应该为使用gosu工具来代替此工具在提升权限的同时在当前线程下执行对应的命令使得容器继续保持一个主进程。 9、默认情况下创建容器时如果不知道网络则默认为bridge网桥模式容器与宿主机直接可以直接通过网桥进行通信但是如果外网需要 访问容器必须经过宿主机的ip同时还需要创建容器时主动暴露映射端口否则外网无法访问容器。但是宿主机可以直接访问容器没有暴露 的服务和端口不需要容器额外声明暴露。 二、基础功能 1、从Docker Hub网站上获取镜像直接执行命令docker pull Name[:TAG] 例如 docker pull ubuntu:18.04。如果不指定TAG则默认会选择latest标签即下载仓库的最新版本镜像。 如果不用官方的仓库获取也可以指定注册服务器的地址。例如 docker pull index.tenxcloud.com/docker_library/node 2、相同的镜像文件只能会有一个相同的容器也只能有一个但是一个镜像可以有生成多个容器。 镜像是否相同是根据 镜像名称版本号 来判断的。容器是否相同是根据容器ID来判断的。 3、容器与应用是同生共死的关系当容器中指定的应用终结时容器也会自动停止此时容器处于stopped状态。 故需要注意有使用伪终端交互时不能使用exit命令终止终端交互应使用Ctrlpq快捷键进行不停止退出方式。 4、配置镜像源加速使用国内镜像来加快docker的镜像访问 1具体配置可参考https://docs.docker.com/engine/reference/commandline/dockerd/。 2创建并配置docker的守护进程vim /etc/docker/daemon.json { registry-mirrors:[http://hub-mirror.c.163.com] } 3重新加载配置使其生效systemctl daemon-reload 4重启docker systemctl restart docker 5、docker的linux版本安装参考https://docs.docker.com/engine/install/centos/#install-using-the-repository 6、docker的命令参数可以用或者空格来赋值参数比如 --networkhost 或者为 --network host 都是一样的意思。 三、使用笔记 1、docker常用操作命令 1查看当前linux系统下有哪些docker镜像文件docker images 可以加 --filter 过滤。 2查看当前运行的docker镜像docker ps 如果需要查看全部容器包括已经停止的可以加 -a如果需要查看容器大小加上 --size 3进入运行的镜像环境 docker exec -it 《镜像CONTAINER ID》 /bin/bash 4给镜像增加别名和打标签docker tag 《镜像名:版本》 《新别名:版本》 5查看镜像详细信息docker inspect 《镜像名:版本》 或者查看容器或则数据卷 《容器名》、《数据卷名》 6在镜像仓库中搜索镜像 docker search 《keyword》 7删除本地镜像docker rmi 《镜像名:版本》 如果镜像有运行中的容器删除会报错可以加 -f 强行删除 8删除容器docker rm 《容器ID》 9清除镜像遗留文件或未使用的镜像 docker image prune 10根据镜像生成容器实例并运行 docker run 《镜像ID》 11启动已存在的容器 docker start 《容器ID》如果容器本身是运行状态则忽略。 12镜像创建用commit、import和build三种形式的子命令。 13存出和载入docker save -o 和 docker load -i 14上传镜像到仓库中心docker push 《镜像名:版本》 相对应的拉取镜像用 docker pull 《镜像名:版本》 15查看docker信息docker info 16查看docker的镜像层docker history 《镜像名:版本》 2、创建镜像 1基于已有容器创建对于在容器环境定制化后进行多机部署非常实用 命令docker commit [options] 《container》 《repository:tag》 示例docker commit -m me added a new file -a Cat 9ca1fdd53ac0 mytestubuntun:1.0 说明-m 表示提交信息 -a表示作者 9ca1fdd53ac0是容器idmytestubuntun:1.0 是新镜像的名称和标签。 2基于本地模板导入 命令docker import [options] 《repository:tag》 说明导入一个镜像可以使用OpenVZ提供的模板来导入或者用其他已导出的镜像模板来创建。 3基于Dockerfile创建 命令docker build 说明创建镜像最常见的方式。Dockerfile是一个文本文件利用给定的指令扫描基于某个父镜像来创建新镜像。 3、存出和载入镜像 1存出镜像 命令docker save -o 《镜像文件名称》 《repository:tag》 示例docker save -o ubuntu_latest.tar ubuntu:latest 说明导出的ubuntu_latest.tar镜像文件默认保存到当前目录下可以将此文件分享和传输到其他机器使用。 2载入镜像 命令docker load -i 《镜像文件》 示例docker load -i ubuntu_latest.tar 或者 ocker load ubuntu_latest.tar 说明导入成功后可以使用docker images命令镜像查看和原镜像一致。如果重复导入不会生效相同镜像只会有一个。 4、容器操作 1创建容器 命令docker create 《repository:tag》 示例docker create -it ubuntu:latest 说明根据ubuntu:lates镜像创建容器并且容器是处于停止状态需要通过start命令启动。 常用options选项 -d, --detachtrue|false 是否后台运行容器默认为false --expose[] 指定容器会暴露出来的端口或端口范围 -i, --interactivetrue|false 保持标准输入打开默认为false -t, --ttytrue|false 是否分配一个伪终端默认为false -p, --public[] 指定如何映射到本地主机端口。小字母p用法为 宿主机端口号:容器端口号。 大字母P用法为 宿主机端口号随机容器里应用使用的端口 --rmtrue|false 容器退出后是否自动删除不能跟-d同时使用 --name 指定容器的别名 -m, --memory 限制容器内应用使用的内存单位可以是b、k、m或g --ulimit[] 限制最大文件数、最大进程数等 -e 设置容器内的环境变量 --link name:alias 链接到其他容器 2启动容器 命令docker start 《容器ID》 3创建并启动容器 命令docker run 《repository:tag》 示例 docker run -it ubuntu:latest /bin/bash 示例 docker run -d ubuntu:latest 说明根据 ubuntu:latest镜像创建容器并用交互模式守护态启动容器可以使容器一直在后台运行不停止。 如果退出后容器也停止可以使用start重新进行启动。具体的可选参数可参考create命令。 常用示例 docker run -d -p 8081:8080 --privilegedtrue --name mytomcat tomcat:8.0.52 说明根据 ubuntu:latest镜像创建容器并用交互模式守护态启动容器可以使容器一直在后台运行不停止。 端口号映射小字母p用法为 宿主机端口号:容器端口号。 大字母P用法为 宿主机端口号随机容器里应用使用的端口。 --privileged表示容器拥有特权比如操作内核模块修改网卡MAC地址等。 常用示例 docker run --name mysqldb -e MYSQL_ROOT_PASSWORDadmin -d mysql:5.7 docker run -d -p 8081:8080 --name web --link mysqldb:datadb tomcat:8.0.52 说明根据 ubuntu:latest镜像创建容器并用交互模式守护态启动容器可以使容器一直在后台运行不停止。 -e是设置容器内的环境变量此处是设置mysql的root用户的密码。在创建并启动好mysql的容器后然后再 创建web应用容器并直接与mysql容器相连接相当于容器之间建立了虚拟通道使其不再需要经过宿主机来通信。 可以进入web容器内部查看/etc/hosts文件来确认容器链接关系。 4查看容器输出 命令docker logs 《容器ID》 示例docker logs 9ca1fdd53ac0 常用options选项 --details 打印详细信息 -f 持续保持输出 5重启容器 命令docker restart 《容器ID》 6暂停容器 命令docker pause 《容器ID》 7取消暂停容器 命令docker unpause 《容器ID》 8清除已停止的容器 命令docker container prune 说明会清除所有的已停止容器 9进入容器 命令docker exec 《容器ID》 或者用 docker attach 《容器ID》 示例docker exec -it 9ca1fdd53ac0 说明当使用-d守护态运行容器后无法查看容器中的信息也无法进行操作此时就可以使用exec进入容器内部操作。加上参数 -u root 可以获得容器root权限。 使用attach比较简单方便但是会导致多个窗口的显示都是一样的都是同一个窗口视图同时还依赖于容器创建指定时的执行命令。 常用options选项 -d, --detach在容器中后台执行命令 -i, --interactivetrue|false 保持标准输入打开默认为false -t, --ttytrue|false 是否分配一个伪终端默认为false 10删除容器 命令docker rm 《容器ID》 说明删除容器。默认情况下只能删除已停止运行的容器。 常用options选项 -f, --force是否强行终止并删除一个运行中的容器 11导出容器 命令docker export 《容器ID》 示例 docker export -o test_container_ubuntu.tar 说明导出容器不管容器是否运行均可导出。导出文件保存到当前目录下并命名为test_container_ubuntu.tar 常用options选项 -e, --output指定导出的容器文件名称 12导入容器变成镜像 命令docker import 《容器文件》 《repository:tag》 示例docker import test_container_ubuntu.tar myubuntu:V1.0 说明容器文件导入后只能变为镜像文件不能直接是变为容器。和docker load载入镜像命令非常相似。 但是容器文件导入后会丢失历史记录和元数据载入镜像记录更完整体积更大。 13查看容器内的进程 命令docker top 《容器ID》 说明会打印出容器内的进程信息包括PID、用户、时间、命令等。 14查看容器的统计信息 命令docker stats 《容器ID》 说明会打印出容器的CPU、内存、存储、网络使用等统计信息。 15复制文件到容器 命令docker cp 《宿主机文件》 《容器ID》:《容器路径》 示例docker cp main_content.txt f850abc5c7e7:/home 说明将宿主机的main_content.txt拷贝到容器的home目录下。 16查看端口映射 命令docker port 《容器ID》 说明查看容器端口与宿主机的映射关系。 17退出容器 说明exit 命令 实际是终止终端同时因为应用已停止导致容器也停止。 如果是想退出容器但是不停止可以用 Ctrlpq 快捷键。 18停止容器 命令 stop 停止命令先发送终止信号10秒后发送kill信号给容器用于保存临时资源的时间推荐此方式来停止容器。 命令 kill 杀死命令直接发送kill信号 19容器CPU限制 命令 docker run --cpu-period100000 --cpu-quota 20000 《repository:tag》 说明在创建并启动容器的时候控制cpu在100000微秒时间内设定CPU的占用上限为20%。 可以在容器里执行 dd if/dev/zero of/dev/null 执行空文件复制测试CPU的使用吞吐量。 另外可以使用--cpu-shares 选项来设定容器的CPU占用权重。 20容器内存限制 命令docker run --memory 200M --memory-swap200M 《repository:tag》 说明在创建并启动容器的时候控制内存使用的最大为200M交换分区的容量也为200M。 21容器磁盘限制 命令docker run --blkio-weight 600 《repository:tag》 说明在创建并启动容器的时候磁盘的读写权重为600注意默认容器磁盘权重为500。 如果需要限制磁盘使用的空间大小可为每个容器创建一个单独的用户然后设置每个用户的磁盘使用空间量。 5、数据卷操作 1创建数据卷 命令docker volume create 《options》 《数据卷名称》 示例docker volume create -d local test 说明在docker的默认目录/var/lib/docker/volumes 路径下创建test目录。 2列出已有数据卷 命令docker volume ls 说明查看已存在的数据卷 3清理无用数据卷 命令docker volume prune 说明清理无用的数据卷 4删除指定数据卷 命令docker volume rm 《数据卷名称》 说明删除指定的数据卷 5使用现有数据卷 命令docker run --mount type《数据卷类型》, source《源目录》, destination《容器目录》 myubuntu:V1.0 示例docker run --mount typevolume, source/test, destination/mytest myubuntu:V1.0 5创建容器并指定数据卷 命令docker run -v 《宿主机目录》:《容器目录》 示例docker run -it -v /home/docker_demo:/home:rw --name testmount myubuntu:V1.0 /bin/bash 说明根据myubuntu:V1.0镜像创建容器并将宿主机的/home/docker_demo目录挂载到容器的/home目录下注意源文件是共用的容器会自动创建目录 拥有rw读写权限默认也为rwro则为只读同时用虚拟终端模式交互。 6查看数据卷信息 命令docker inspect 《数据卷id》 示例docker inspect vuetclfddcon 说明查看vuetclfddcon数据卷的信息可以看到厂家时间挂载宿主机的路径等信息。 四、Dockerfile的使用 1、Dockerfile文件是由一行行的指令构成指令基础知识如下 1每条保留字指令都必须为大写字母且跟随至少一个参数。 2指令安装上到下顺序执行。 3指令的注释采用#符号。 4每条指令的执行都会创建一个新的镜像层。 2、通常使用自定义的Dockerfile创建镜像的过程如下 1新建一个目录/root/dockertest作为上下文目录一般情况下Dockerfile都放到此目录或者通过-f选项来执行路径。 2新建和编写Dockerfile文件。通常都是在一个基础镜像上面加工改进而来的。 3用docker build命令创建新镜像放到本地镜像仓库命令示例 docker build -t test:6 .。 4使用run命令将新镜像运行起来。 3、简单的Dockerfile文件编写参考 ARG VERSION7 FROM centos:${VERSION} LABEL descgwj_df date2022-11-16 ENV APP_VERSION1.1.0 ENV PATH $PATH:/usr/local/bin11 VOLUME [/votest1,votest2] WORKDIR /home/abc/ ONBUILD RUN mkdir mydir RUN echo hellow word readme.txt EXPOST 8080 CMD [/bin/bash] 4、Dockerfile文件常用指令 1ARG定义创建镜像过程中的临时变量。 ARG name [default value] 定义并指定默认值。使用${}来读取变量值。 当镜像编译成功后变量将不再存在。可以使用 docker build --build-arg 参数名值来覆盖文件配置。 2FROM指定所创建镜像的基础镜像即在某基础镜像上进行增加自定义的指令。 如nginx、redis、mysql、centos等基础服务或系统的基础镜像基础上构建。 3LABEL指令可以为生成的镜像添加元数据标签信息。LABEL keyvalue keyvalue 的格式号左右两边不要有空格。 每个LABEL标签都会生成一个镜像层建议将多个标签合并在一个指令。创建镜像后可以通过docker inspect 查看标签信息。 另外可以用docker image --filter labelkeyvalue来方便查询镜像。 4EXPOST暴露容器运行时的监听端口给外部的宿主机。EXPOSE 端口号 该指令只是起到声明作用通过宿主机暴露出去时还是需要通过-p参数来映射。 5ENV指定环境变量。在镜像生成过程中或启动的容器中都会存在此环境变量。注意与ARG的区别是ARG是临时的变量后续容器中不会存在。 注意如果同一行里面进行更改变量和赋值是优先做了赋值操作后再更改变量。可以使用 docker run --env 参数名值来覆盖文件配置。 6CMD容器启动后执行的命令。如果在使用run命令的时候有指定命令则会覆盖Dockerfiile文件里面CMD定义的命令。 多个CMD则最后一个命令生效。shell格式为 CMD echo docker so easy, exce格式为 CMD[echo,docker so easy]。 如果当前Dockerfile里面没定义CMD命令则会默认使用父镜像文件的CMD命令。可以使用 docker run 执行命令 来覆盖文件配置。 7ENTRYPOINT命令与CMD命令相似都是指定容器启动后执行的命令。通常和CMD结合起来使用ENTRYPOINT命令指定命令 CMD则变为指定执行命令的参数。多个ENTRYPOINT则最后一个命令生效。可以使用 docker run --entrypoint 来覆盖文件配置。 8VOLUME创建一个数据卷挂载点。在容器启动后就自动创建好文件里编写的挂载点。 例如 VOLUME [/vuetclfddcon] 则会在容器里的根目录下创建vuetclfddcon目录挂载在宿主机的默认docker数据卷目录下的一个uuid文件夹下。 9WORKDIR指定工作目录。如果该目录不存在会自动创建。后面的指令工作目录都将会在此目录下包括docker run启动后也是在此目录下。 可以使用docker run -w 参数覆盖文件配置。 10USER切换用户。默认容器的初始用户为root用户通过USER命令进行切换并影响后面的镜像层比如RUN、ENTRYPOINT、CMD等命令的执行身份。 注意切换的用户必须已经存在的否则无法切换。通常切换用户不建议使用USER命令而是借助第三方工具gosu来执行。 11ONBUILD是一个特殊指令他后面跟的是其他指令而这些指令在当前镜像构建时并不会执行而是在以当前镜像为基础镜像去构建下一级镜像时 才被执行。唯有此指令是为帮助别人定制镜像而准备的。格式为 ONBUILD 其他指令 。 12HEALTHCHECK健康检查指令用于判断容器主进程的服务状态是否正常后面跟CMD命令。当镜像指定了HEALTHCHECK指令后启动容器时初始状态为starting 检查成功后变为healthy如果连续失败则变为unhealthy。支持的选项为 --interval间隔秒默认30秒 --timeout时长秒默认30秒 --retries次数默认3次。 13RUN执行命令指令默认使用的是终端的/bin/sh -C 来执行shell脚本。当指令较长时可以使用\来换行。例如表示前面命令执行成功后执行||表示执行失败时执行 RUN apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \ rm -rf /var/cache/apt 14COPY复制文件命令将本地宿主机上的目录复制到新的一层的镜像内的位置构建后的镜像和启动的容器都会存在此文件可以使用通配符同时拷贝多个文件。 格式为 COPY 源宿主机路径 容器目标路径。容器目标路径的目录不需要先创建在构建的时候如果不存在会自动创建另外源文件的元数据信息都会保留 比如读、写、文件变更等时间。 注意源宿主机路径 是在当前编译Dockerfile文件目录的上下文目录下的相对路径。如果无法找到则会去/var/lib/docker/tmp/临时目录下读取文件。 故建议是将需要拷贝的文件放到与Dockerfile文件同级目录里使用相对路径拷贝。 15ADD复制文件命令与COPY命令性质基本一致在COPY基础上增加了一些功能比如ADD 源路径 可以是一个URL地址docker引擎会视图去下载链接文件到目标路径。 另外使用ADD命令的源路径是一个tar压缩文件的话会自动解压文件到目标路径去。 5、特殊的虚拟镜像scratch表示空白的镜像。接下来所写的指令作为镜像层的第一层不以任何操作系统为基础直接将可执行文件复制到镜像。 类似contosubuntu等镜像都是使用空白镜像。 五、Docker网络 1、操作docker的网络均通过命令 docker network 《选项》 来执行。 2、通过执行命令来查看docker的网络 1查看docker的网络docker network ls 2如果要查看完整的网络iddocker network ls --no-trunc 3过滤驱动docker network ls --filter driverbridge 3、创建网络 docker network create 《网络名》 默认创建的网络为bridge模式。 4、查看网络信息 docker network inspect 《网络名》 5、删除网络 docker network rm 《网络名》 6、将正在运行的容器连接到网络docker network connect 《网络名》 《容器名》 7、断开容器的网络连接docker network disconnect 《网络名》 《容器名》 8、将正在运行的容器连接到网络指定容器ipdocker network connect --ip 《容器ip》《网络名》 《容器名》 9、启动时将容器连接到网络docker run -itd --network《网络名》 《即将启动的容器》 10、删除所有无用的网络docker network prune 11、网络模式 1bridge为每一个容器分配、设置IP等并将容器连接到docker0的虚拟网桥。 2host容器不会虚拟出自己的网卡、IP等而是使用宿主机的IP和端口。 3none容器有自己独立的Network namespace但是没有进行任何的相关配置网络也只有一个回环地址。 4container和一个指定的容器共享IP端口范围等。 5用户自定义网络通过定义自己的网络同一个网络的容器彼此可见。docker run -network mynet 《repository:tag》 12、概念说明在安装docker后会自动创建bridge桥接网络并且在网卡上创建的虚拟网卡名称为docker0此docker0相当于交换机用于宿主机与容器进行通信。 默认情况下容器之间可以通过ip进行ping通但是如果通过容器名称则不通此时可以通过创建自定义网络然后将需要通信的容器都加入到此网络中 就可以通过容器名称来通信用于代替官方即将过期的--link 联通方式。 六、实战操作 1、部署redis服务单节点 步骤一查询redis镜像docker search redis 推荐使用官方镜像即OFFICIAL为OK的则为redis官方提供的镜像。 步骤二下载redis镜像docker pull redis:7.0.5 具体有哪些版本可以通过浏览 https://hub.docker.com/_/redis 网页查看Supported tags and respective Dockerfile links。 步骤三编写定制化的redis.conf文件放在/home/docker_demo/redis目录下。 步骤四创建容器并启动。docker run --name myredis -d -p 7000:7000 -v /home/docker_demo/redis:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf 步骤五查看启动日志 docker logs 《容器id》。 步骤六使用redis的客户端连接查看 docker run -it redis:7.0.5 redis-cli -h 《宿主机ip》 -p 7000 附加redis容器使用的系统为debian操作系统如果想要在线安装软件首先需要更新apt安装工具执行命令 apt-get update等待更新成功后就可以进行安装软件。 例如安装ps进程查看工具可以使用 apt-get install -y procps 例如安装ifconfig网络查看工具可以使用 apt-get install -y net-tools 例如安装ip查看工具可以使用 apt-get install -y iproute2 例如安装vim查看工具可以使用 apt-get install -y vim 例如安装文件上传工具可以使用 apt-get install -y lrzsz 例如安装keepalived高可用性工具可以使用如果加-y需要--force-yes apt-get install keepalived 如果想安装加速可以配置国内镜像163安装源在/etc/apt/sources.list.d/目录下增加163.list配置配置后需要执行apt-get update。 2、部署redis服务使用cluster官方集群 步骤一下载redis镜像docker pull redis:7.0.5 步骤二创建自定义网络 docker network create --subnet172.18.0.0/16 myredisnet 步骤三创建容器并启动(集群要求至少3个主节点如果要从节点则共需要6个节点) docker run --name myredis01 -d -p 7010:6379 --netmyredisnet --ip172.18.0.3 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf docker run --name myredis02 -d -p 7011:6379 --netmyredisnet --ip172.18.0.4 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf docker run --name myredis03 -d -p 7012:6379 --netmyredisnet --ip172.18.0.5 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf docker run --name myredis04 -d -p 7013:6379 --netmyredisnet --ip172.18.0.6 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf docker run --name myredis05 -d -p 7014:6379 --netmyredisnet --ip172.18.0.7 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf docker run --name myredis06 -d -p 7015:6379 --netmyredisnet --ip172.18.0.8 -v /home/docker_demo/redis/cluster:/usr/local/etc/redis/conf/ redis:7.0.5 redis-server /usr/local/etc/redis/conf/redis.conf 步骤四进入其中一台redis的容器内部 docker exec -it myredis01 bash 然后再容器内部执行命令创建集群组合 redis-cli --cluster create 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 172.18.0.8:6379 --cluster-replicas 1 然后会列出master和slave节点分别是哪几个并且要求输入 yes进行确认。 步骤五执行 redis-cli -c 以集群方式进入redis的客户端后执行 cluster info 可以查看到集群的节点信息。 附加 1执行keys * 时查看的只是当前指定重定向后的某台服务器的key集合如果想看全部集群的key可以执行命令172.18.0.5:6379是其中一个集群节点即可 redis-cli -c --cluster call 172.18.0.5:6379 keys \* 2在cluster集群搭建好后后期想扩容redis节点可以执行命令 增加master节点redis-cli --cluster add-node ${要添加的节点地址} ${集群中任意地址} 示例redis-cli --cluster add-node 172.18.0.9:6379 172.18.0.3:6379 增加slave节点redis-cli --cluster add-node ${要添加的节点信息} ${集群中任意地址} --cluster-slave --cluster-master-id ${对应master节点的ID} 示例redis-cli --cluster add-node 172.18.0.10:6379 172.18.0.3:6379 --cluster-slave --cluster-master-id a8d04103c8679311267e40de3152b091e56a0148 给新增节点分配槽位redis-cli --cluster reshard ${集群中任意地址} --cluster-from {原节点ID} --cluster-to {目标节点ID} --cluster-slots {槽位数} --cluster-yes 示例redis-cli --cluster reshard 172.18.0.3:6379 --cluster-from 89b0db9c15cd453e1c6f48040691bad405154229 --cluster-to a8d04103c8679311267e40de3152b091e56a0148 --cluster-slots 2500 --cluster-yes 3、部署percona数据库服务使用keepalivedhaproxypxc集群 附加percona数据库是基于mysql的基础上做了增强型的二次开发的开源数据库pxc集群模式是官方提供的所有节点的数据节点是通过同步复制的方式进行。 4、部署java应用 方式一拉取java镜像docker pull java:8 然后运行此容器然后将java应用传输到此目录下并运行从而提供web服务。 方式二基于java镜像文件自己编写Dockerfile文件主要是将自己的java应用通过数组卷方式挂载容器里生成镜像文件然后启动运行。 5、部署web前端项目使用nginx 步骤一查询nginx镜像docker search nginx 推荐使用官方镜像即OFFICIAL为OK的则为redis官方提供的镜像。 步骤二下载nginx镜像docker pull nginx:1.11.8 具体有哪些版本可以通过浏览https://hub.docker.com/_/nginx/tags 网页查看。 步骤三创建/home/docker_demo/vue_tclfdd文件夹编写定制化的nginx.conf文件放在/home/docker_demo/vue_tclfdd/conf目录下。 步骤四在/home/docker_demo/vue_tclfdd目录下将h5前端项目tclfdd拷贝到此目录下。 步骤五创建Dockerfile文件继承nginx镜像进行编写也可以不需要Dockerfile文件直接用nginx镜像。 步骤六编译生成镜像文件 docker build -t ng_tclfdd:7.0 . 步骤七创建容器并启动。docker run --name mynginx -d -p 9523:9523 --privilegedtrue ng_tclfdd:7.0 6、web前端高可用部署使用keepalived冗余nginx 步骤一进入已经部署了nginx的容器容器必须是有privileged权限 docker exec -it mynginx bash 步骤二nginx镜像默认使用的是debian系统更新安装工具进行在线安装软件。执行apt-get update 步骤三在线安装keepalived。执行 apt-get install keepalived 步骤四进入/etc/keepalived目录创建keepalived.conf文件并写入相关配置信息官网配置说明地址https://www.keepalived.org/manpage.html。 步骤五启动keepalived服务。执行 service keepalived start 输出 [....] Starting keepalived: keepalived. ok 则表示启动成功。 启动成功后注意需要关注容器占用的磁盘大小如果磁盘占用不断增大说明keepalived存在兼容问题需要先停止此服务 将容器内的/var/log权限放开 执行 chmod -R 777 /var/log或者将宿主机的keepalived给安装上去再启动容器的此服务。 步骤六在宿主机上安装keepalived服务将容器的虚拟vip与宿主机的vip做映射使得外网可通过宿主机vip来转发到容器vip访问实现容器nginx的高可用。 执行在线安装 yum install keepalived 安装成功后进入/etc/keepalived目录创建keepalived.conf文件并写入相关配置信息。 步骤七启动宿主机的keepalived服务执行 service keepalived start可在 /var/log/messages 日志下查看服务输出。启动成功后就可以通过 宿主机的vip来访问。 附加 1keepalived是基于lvs来通过虚拟ip访问的。其原理就是通过虚拟ip转移到可用服务器保持高可用。 手工给网卡创建虚拟ip地址ifconfig ens192:1 10.0.17.247 netmask 255.255.255.0 up 手工删除网卡的虚拟ip地址ip addr del 10.0.17.247 dev ens192:1 2由于keepalived的启动没写入到docker的CMD命令内如果容器被重启需要进入容器再执行启动keepalived服务。 3上面的搭建keepalived高可用没有额外写检测nginx服务是否可用的脚本由于nginx启动后是容器主进程命令故如果nginx宕机 容器也基本会死掉keepalived也会停掉被其他容器keepalived检测到将vip转移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正能量网站入口地址网站建设属于哪个行业分类

PHP 循环 - While 循环循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。PHP 循环在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。在 PHP 中,提供了下列循环语…

国外直播做游戏视频网站有哪些老实人做网站

React 开发问题积累1. 修改antd的组件样式2. antd级联选择框(后台数据渲染)1. 修改antd的组件样式 问题:直接修改样式好像不起作用,直接在组件上加style行内样式也不生效 方案:用 :global样式穿透 全局样式直接使用 …

贵州网站建设设计公司杭州网站优化平台

目录 keepalived概述 vrrp工作原理 keepalived体系主要的模块及其作用 模块 core模块 vrrp模块 check模块 作用 keepalived工作原理 keepalived和lvs-DR实验 keepalived概述 keepalived高可用应用(健康检查,故障切换) 节点服务器…

网站服务器错误403wordpress电影下载

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算,如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题,如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就…

国内大中型网站建设知名公司网站开发课设心得

目录 原因分析一 原因分析二 原因分析三 第一次使用 MySQL Command Line Client 有可能输入密码后一按下回车键,程序窗口就自动关闭,出现闪退现象。本节主要分析产生闪退现象的原因以及如何处理这种情况。 原因分析一 首先可以查看程序默认执行文件…

网站优化外链个人网站需要什么页面

组合模式(Composite) 组合模式是一种结构型模式,它可以将对象组合成树状结构,用来区分部分和整体的层次机构,又叫部分整体模式 角色 组件:组合中所有对象的通用接口,可以是抽象类或者接口&…

C. Strange Function

https://codeforces.com/problemset/problem/1542/C 题意:给定数字n,对于所有i∈[1, n], 找出第一个不被n整除的正数,计算这些正数的和。 思路:如果i是x的第一个不能整除的正整数,那么i - 1, i - 2,...1都能被x整…

剑指offer-33、丑数

题⽬描述 把只包含质因⼦ 2 、 3 和 5 的数称作丑数( Ugly Number )。例如 6 、 8 都是丑数,但 14 不是,因为它包含质因⼦ 7 。 习惯上我们把 1 当做是第⼀个丑数。求按从⼩到⼤的顺序的第 N 个丑数。 如果 n = 9 …

C#操作Excel核心要点:告别手动,拥抱自动化

作为.NET开发者,我们经常会遇到需要与Excel文件打交道的场景:生成报表、批量处理数据、进行复杂的数据分析等。手动操作不仅效率低下,而且容易出错。掌握C#操作Excel的核心技能,能让我们从重复劳动中解放出来。 本…

250925

目录JT-JY4T4S1-1JT-JY4T4S1-2FT-(JY4T1S1&JY4T2S1&JY4T3S1&CD3s&VOAC3s) JT-JY4T4S1-1 JT-JY4T4S1-2 FT-(JY4T1S1&JY4T2S1&JY4T3S1&CD3s&VOAC3s)

云平台qcow2镜像的制作

云平台qcow2镜像的制作 一、基础准备 cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)安装依赖包 yum groupinstall -y "Virtualization*" yum install -y libguestfs-tools-c.x86_64下载驱动…

国外做外汇网站交流怒江州城乡建设局网站

69.题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 先看一下第一种实现方式 nmax 50 n int(input(请输入总人数:)) num [] f…

使用责任链模式简化if-else代码示例

使用责任链模式简化if-else代码示例Posted on 2025-09-25 08:54 刚泡 阅读(0) 评论(0) 收藏 举报使用责任链模式简化if-else代码示例:1 package com.siasun.java8.function.responsibility;2 3 import java.math…

织梦手机网站模板下载备份wordpress到百度云

介绍 在很多应用中,会出现点击按钮出现水波纹的特效。 效果图预览 使用说明 进入页面,点击按钮,触发水波纹动画。再次点击按钮,停止水波纹动画。 实现思路 本例涉及的关键特性和实现方案如下: 要实现存在两个连续…

hf 下载模型

hf 下载模型huggingface-cli download --resume-download stable-diffusion-v1-5/stable-diffusion-v1-5 --local-dir .

SQLAlchemy -> Base.metadata.create_all(engine )详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

漂亮购物网站欣赏国外网站开发技术现状

UE4_材质节点 2017-12-07 13:56 跑九宫格 跑UV 评论(0)

使用Function Interface简化if-else代码示例

使用Function Interface简化if-else代码示例Posted on 2025-09-25 08:52 刚泡 阅读(0) 评论(0) 收藏 举报使用表驱动的方法,利用Function Interface优化If-else的示例代码:1 package com.siasun.java8.function…

南京网站建设企业装修网站建设策划方案

DataStream API 将你的应用构建为一个 job graph,并附加到 StreamExecutionEnvironment 。当调用 env.execute() 时此 graph 就被打包并发送到 JobManager 上,后者对作业并行处理并将其子任务分发给 Task Manager 来执行。每个作业的并行子任务将在 task…

网站开发人才需求章丘建设局网站

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135930139 小分子药物生成是一种利用计算方法自动探索化学空间,寻找具有理想生物活性和药物特性的分子结构的过程。从头设计是一种特殊…