docker
2023-11-28 14:51:00 0 举报
AI智能生成
docker
作者其他创作
大纲/内容
docker安装mysql主从
服务器规划
服务器规划:使用docker方式创建,为了方便演示,我们都在一台服<br>务器上搭建伪集群,
主服务器:容器名:mysql-master,端口3308
从服务器:容器名 mysql-slave-1,端口3309<br>容器名 mysql-slave-2,端口3310
注意: 如果此时防火墙是开启的,则先关闭防火墙,并重启<br>docker,否则后续安装的MysQL无法启动
# 关闭docker<br>systemctl stop docker<br># 关闭防火墙<br>systemctl stop firewalld<br># 启动docker<br>systemctl start docker
一主多从配置
准备主服务器
setp 1:在Docker中创建并启动MySQL主服务器:端口3308
docker run -d -p <font color="#ff0000">3308:3306</font> -v /linghu/mysql/master/conf:/etc/mysql/conf.d -v /linghu/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<font color="#ff0000">123456</font> --name linghu-mysql-master <font color="#ff0000">mysql:8.0.31</font>
各段命令的含义
# -d 是作为守护进程启动<br>docker run -d <br># 服务器真实的端口号映射 : docker 容器中的端口号<br>-p 3308:3306 <br># 配置文件的映射<br>-v /linghu/mysql/master/conf:/etc/mysql/conf.d <br># mysql 数据目录映射<br>-v /linghu/mysql/master/data:/var/lib/mysql <br># 账号密码(docker容器内部密码)<br>-e MYSQL_ROOT_PASSWORD=123456 <br># 容器的名字<br>--name linghu-mysql-master <br>#使用的镜像<br>mysql:8.0.29
服务器验证mysql 是否成功启动
docker ps
如果状态不是UP,大概率是端口被占用,或者是防火墙
step 2:创建MySQL主服务器配置文件
默认情况下MySQL的binlog日志是自动开启的,可以通过如下配<br>置定义一些可选配置
vi /linghu/mysql/master/conf/my.cnf
配置如下内容
[mysqld]<br># 服务器唯一id,默认值1<br>server-id=2<br># 设置日志格式,默认值ROW<br>binlog_format=STATEMENT<br># 二进制日志名,默认binlog<br># log-bin=binlog<br># 设置需要复制的数据库,默认复制全部数据库<br># binlog-do-db=mytestdb<br># 设置不需要复制的数据库<br># binlog-ignore-db=mysql<br># binlog-ignore-db=infomation_schema
重启MySQL容器
docker restart linghu-mysql-master
检查docker 容器状态
docker ps
step3:进入docker容器连接mysql服务器
# 进入容器: env LANG=C.UTF-8避免容器中显示中文乱码<br># 使用exec -it 进入mysql-master的容器 命令行交互界面<br>docker exec -it linghu-mysql-master env LANG=C.UTF-8 /bin/bash<br>
成功进入容器内部
# 进入容器内的MySQL命令行执行<br>mysql -uroot -p<br># 更改密码策略<br>ALTER USER 'root'@'%' IDENTIFIED WITH<br>mysql_native_password BY '123456';<br># 刷新权限<br>FLUSH PRIVILEGES;
step4:使用 navicat 连接mysql
step5:创建slave用户
# 创建slave用户<br>CREATE USER 'linghu-slave'@'%';<br># 设置密码<br>ALTER USER 'linghu-slave'@'%' IDENTIFIED WITH<br>mysql_native_password BY '123456';<br># 授予复制权限<br>GRANT REPLICATION SLAVE ON *.*TO 'linghu-slave'@'%';<br># 刷新权限<br>FLUSH PRIVILEGES;
step6:<font color="#ff0000">主机中查询master状态</font>
执行完这个步骤后,观察主服务器MySQL,不再操作主服务器,防止<br>主服务器状态值变化
SHOW MASTER STATUS;
记下<font color="#ff0000">File</font>和<font color="#ff0000">Position</font>的值。执行完此步骤后不要在操作主服务器<br>MySQL,防止主服务器状态值发生变化。
准备从服务器<br>(根据自己的需要配置多台从机器 slave1、slave2.... <br>这里以配置<br>slave1为例子)
step1:在docker中创建并启动MySQL从服务器:端口:3309
docker run -d -p 3309:3306 -v /linghu/mysql/slave1/conf:/etc/mysql/conf.d -v /linghu/mysql/slave1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name linghu-mysql-slave1 mysql:8.0.31
step2:创建MysQL从服务器配置文件
vi /linghu/mysql/slave1/conf/my.cnf
[mysqld]<br># 服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改<br>server-id=5<br># 中继日志名,默认×××××××××××x-relay-bin<br># relay-log=relay-bin
重启MySQL容器
docker restart linghu-mysql-slave1
检查容器是否成功启动
docker ps
step3:使用命令行登录MySQL从服务器
# 进入容器<br>docker exec -it linghu-mysql-slave1 env LANG=C.UTF-8 /bin/bash<br># 进入容器内的MySQL命令行执行<br>mysql -uroot -p<br># 更改密码策略<br>ALTER USER 'root'@'%' IDENTIFIED WITH<br>mysql_native_password BY '123456';<br># 刷新权限<br>FLUSH PRIVILEGES;
step4:在从服务器上配置主从关系:
在从机上执行以下SQL操作:
CHANGE MASTER TO MASTER_HOST=<br>'<font color="#ff0000">192.168.1.16</font>',MASTER_USER='<font color="#ff0000">linghu-slave</font>',MASTER_PASSWORD='<font color="#ff0000">123456</font>',<br>MASTER_PORT=<font color="#ff0000">3308</font>,MASTER_LOG_FILE='<font color="#ff0000">binlog.000003</font>',<br><i>MASTER_LOG_POS</i>=<font color="#ff0000">1521</font>;
MASTER_LOG_FILE 是<font color="#ff0000">主节点</font>SHOW MASTER STATUS;查看到<font color="#ff0000">File</font><font color="#000000">字段</font>的值<br>MASTER_LOG_POS是<font color="#ff0000">主节点</font>SHOW MASTER STATUS;查看到的<font color="#ff0000">Position</font><font color="#000000">字段</font>值<br>
启动主从同步
启动从机器的复制功能,执行SQL:
START SLAVE;
-- 查看数据库状态(不需要分号)<br>SHOW SLAVE STATUS\G
2个yes表示成功
如果链接失败,在从机上解绑重试
停止已经启动的绑定
stop slave;
重置绑定<br>
reset master;
重新配置主从关系
常见问题
停止和重置
# 在从机上执行。功能说明:停止I/0线程和SQL线程的操作。<br>stop slave;<br># 在从机上执行。功能说明。用于册除SLAVE数据库的relaylog日志<br>文件,并重新启用新的relaylog文件。<br>reset slave;<br># 在主机上执行。功能说明。班除所有的binglog日志文件。并将日志<br>索引文件清空,重新开始所有新的日志文件。<br># 用于第一次进行搭建主从库时,进行主库binlog初始化工作;<br>reset master;
MySQL主从同步文件
MySQL主从同步文件
binlog_format
binlog行格式说明:
binlog_format=STATEMENT:日志记录的是主机数据库的 写指<br>令,性能高,但是一旦使用了系统函数 now()以及获取系统参<br>数的操作会出现主从数据不同步的问题。
binlog_format=ROW(默认):日志记录的是主机数据库的 写<br>后的数据,批量操作时效性差,解决了系统函数now()之类等操<br>作在主从机器上不一致的问题。
binlog_format=MIXED:是以上两种level的混合使用,有函数<br>用ROW,没函数用STATEMENT,但是无法识别系统变量。
binlog-ignore-db和binglog-do-db优先<br>级
[mysqld]<br># 服务器唯一id,默认值1<br>server-id=2<br># 设置日志格式,默认值ROW<br>binlog_format=STATEMENT<br># 二进制日志名,默认binlog<br># log-bin=binlog<br># 设置需要复制的数据库,默认复制全部数据库<br># binlog-do-db=mytestdb<br># 设置不需要复制的数据库<br># binlog-ignore-db=mysql<br># binlog-ignore-db=infomation_schema
如果我们两者都不配置,默认的情况,所有的更改我们都会写入<br>binlog日志,然后主从复制。<br>如果有配置do-db 那么 ignore-db 会被忽略。
概述
docker是什么
Docker是一个供开发人员和系统管理员开发、部署和运行带有容器的应用程序的平台。<br>使用Linux容器来部署应用程序被称为容器化。容器并不新,但它们用于轻松部署应用程序。
部署应用的各个时代
远古时代
缺点:成本高、部署慢、浪费资源、<br>硬件限制、不利于迁移扩展
虚拟化时代
优点 :相对利用好资源,相对容易扩展等。<br>缺点 :虚拟机太重了,一上来占用较多物理资源,<br>移植性差,资源利用率低等。
容器时代
docker和虚拟机的额区别
docker的整体结构
engine
images
容器镜像:把软件需要额代码,环境,文件等封装成 一个镜像
官方的镜像仓库:<font color="#0000ff">https://hub.docker.com/</font>
Container
容器:通过镜像可以创建,很多个容器
安装docker
安装准备
环境要求
Docker 其实就是一个服务容器,可以运行在Windows、Mac、<br>CentOS、Ubuntu等操作系统
Docker支持以下的centos版本:<br>CentoS 7(64-bit)<br>CentoS 6.5(64-bit)或更高的版本
目前,Centos仅发行版本中的内核支持Docker<br>Docker运行在Centos 7上,要求系统为64位、系统内核版本<br>为3.10 以上。<br>Docker运行在CentOS-6.5或更高的版本的centos 上,要求<br>系统为64位、系统内核版本为2.6.32-431或者更高版本。
检查系统内核
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主<br>机名称和操作系统类型等)
<font color="#fbc02d">uname -r</font>
这里显示是3.10版本 x86架构64位的操作系统
检查已经安装的CentOS版本
<font color="#fbc02d">cat /etc/redhat-release</font>
CentOS 7 安装 Docker
.安装需要的基础软件包
y -utils提供了 yy-config-manager相关功能,device-mapperpersistent-data和Ivm2是设备映射器驱动程序所需要的。
<font color="#ff0000">yum install -y yum-utils device-mapper-pergistendata lvm2t</font>
更新yum软件包索引
我们在更新或配置yum源之后,通常都会使用yum makecache生成<br>缓存,这个命令是将软件包信息提前在本地缓存一份,用来提高搜<br>索安装软件的速度
<font color="#ff0000">yum makecache fast</font>
安装docker-ce<br>
yum remove docker \<br> docker-client \<br> docker-client-latest \<br> docker-common \<br> docker-latest \<br> docker-latest-logrotate \<br> docker-logrotate \<br> docker-engine
sudo yum install -y yum-utils<br>sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<br>或者<br>yum install -y docer-ce<br>
#测试安装是否成功<br>sudo docker run hello-world<br>
#设置开启启动<br>sudo systemctl enable docker<br>
如果出现安装失败再来一次:
#1.下载关于docker的依赖环境<br>yum install -y yum-utils device-mapper-pergistendata lvm2t<br>#2.设置一下下载Docker的镜像源 如果不设置,默认会从官网下载<br>yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo<br>#3.安装Docker<br>#安装Docker缓存<br>yum makecache fast<br>#安装Docker的服务<br>yum -y install docker-ce<br>#4.启动,并设置为开机自动启动,测试<br>#启动Docker服务<br>systemctl start docker<br>5.启动docker<br>6.版本验证<br>7.设置开机启动<br>#设置开机自动启动<br>systemctl enable docker<br>#测试<br>docker run hello-world
设置docker下载镜像
阿里云
sudo mkdir -p /etc/docker<br>
sudo tee /etc/docker/daemon.json <<-'EOF'<br>{<br> "registry-mirrors": ["https://s9qq12t0.mirror.aliyuncs.com"]<br>}<br>EOF<br>
sudo systemctl daemon-reload<br>
sudo systemctl restart docker
启动docker
<font color="#ff0000">systemctl start docker</font>
版本验证
<font color="#ff0000">docker version</font>
<font color="#ff0000">设置开机启动</font>
# 查看服务是否自动启动(是:enabled|否:disabled)<br>systemctl list-unit-files lgrep docker.service<br># 设置开机启动,如果不是enabled可以运行以下命令设置自启动<br>systemctl enable docker<br># 重新加载服务配置<br>systemctl daemon-reload
资料
官网:http://www.docker.com
安装手册 (社区版):https://docs.docker.com/engine/install/centos/
docker的使用
docker操作命令
基础命令
启动docker
systemctl start docker<br>
关闭docker
systemctl stop docker<br>
重启docker
systemctl restart docker<br>
docker设置随服务启动而自启动
systemctl enable docker<br>
查看docker 运行状态
systemctl status docker
查看docker 版本号信息
docker version<br>
docker info<br>
docker 帮助命令
docker --help<br>
docker pull --help<br>
<font color="#fbc02d">官方镜像搜索</font>
https://hub.docker.com/search?q=&type=image
docker中的<font color="#ff0000">镜像</font> 就像是咱们java 中的Class ,<br><font color="#ff0000">容器</font>呢 是基于这个镜像构建出的实例 类似于咱java 中 根据Class构造出的一个个实例对象
镜像命令
查看自己服务器中docker 镜像列表
docker images<br>
搜索镜像
docker search 镜像名<br>#搜索 STARS >9000的 mysql 镜像<br>docker search --filter=STARS=9000 mysql <br>
拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名 <br>docker pull 镜像名:tag<br>
运行镜像
docker run 镜像名<br>docker run 镜像名:Tag<br>
例子
#拉去最新的tomcat镜像并运行<br>docker pull tomcat<br><br>docker run tomcat<br>
删除镜像
#删除一个<br>docker rmi -f 镜像名/镜像ID<br><br>#删除多个 其镜像ID或镜像用用空格隔开即可 <br>docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID<br><br>#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID<br>docker rmi -f $(docker images -aq)<br>
强制删除镜像
docker image rm 镜像名称/镜像ID<br>
保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,<br>然后 可以在任何一台安装了docker的服务器上 加载这个镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字<br>
例子
docker save tomcat -o /myimg.tar<br>
加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置<br>
镜像标签
app:1.0.0 基础镜像<br># 分离为开发环境<br>app:develop-1.0.0 <br># 分离为alpha环境<br>app:alpha-1.0.0 <br>
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]<br><br>docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG<br><br># 如果省略TAG 则会为镜像默认打上latest TAG<br>docker tag aaa bbb<br># 上方操作等于 docker tag aaa:latest bbb:test<br>
例子
# 我们根据镜像 quay.io/minio/minio 添加一个新的镜像 名为 aaa 标签Tag设置为1.2.3<br>docker tag quay.io/minio/minio:1.2.3 aaa:1.2.3<br><br># 我们根据镜像 app-user:1.0.0 添加一个新的镜像 名为 app-user 标签Tag设置为alpha-1.0.0<br>docker tag app-user:1.0.0 app-user:alpha-1.0.0<br>
容器命令
查看正在运行容器列表
docker ps<br>
查看所有容器 <br>(包含正在运行 和已停止的)<br>
docker ps -a<br>
更换容器名<br>
docker rename 容器ID/容器名 新容器名<br>
运行和运行中的命令
运行一个容器<br><br>
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径<br>docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash <br>
例子
#1. 拉取redis 镜像<br>docker pull redis:5.0.5<br>#2.命令启动<br>docker run -it -d --name redis001 redis:5.0.5 /bin/bash<br>
<font color="#ff0000">容器端口与服务器端口映射</font>
Docker 一大特点,每个容器之间环境都是隔离的!!!<br>我们甚至可以在一个服务器上,使用docker镜像,来跑出N个 mysql实例<br>(尽管,他们的默认端口都是一样的,但还是那句话,容器间,环境是隔离的。<br>A容器中的3306 与B容器的3306毫无关系,因为其不在一个世界呀!)<br><br>默认情况下,我们是无法通过宿主机(安装docker的服务器)端口来直接访问容器的<br> ,因为docker容器自己开辟空间的端口与宿主机端口没有联系…<br>
-p 宿主机端口:容器端口<br>
例子
-p 8888:6379 解析 将容器内部的 6379端口与docker 宿主机<br>(docker装在哪台服务器 哪台服务器就是宿主机)8888 端口进行映射 <br>那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了
docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash<br>
重启容器<br>
docker restart 容器ID/容器名<br>
启动容器<br><br>
docker start 容器ID/容器名<br>
<font color="#ff0000">随docker服务启动而自动启动</font>
方法一(容器启动时操作)
<b><font color="#4669ea">启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动</font></b>
docker run -itd --name redis002 -p 8888:6379 <b><font color="#4669ea">--restart=always</font></b> redis:5.0.5 /bin/bash<br>
方法二(容器已经启动时的操作)
<b><font color="#4669ea">docker update --restart=always 容器Id 或者 容器名<br><br>或<br><br>docker container update --restart=always 容器Id 或者 容器名</font></b><br>
<font color="#ff0000">查看容器日志</font>
docker logs -f --tail=要查看末尾多少行 默认all 容器ID<br>
<font color="#ff0000">容器和服务器的切换</font>
进入容器方式
方式一(推荐使用)
docker exec -it 容器名/容器ID /bin/bash<br><br>#进入 前面的 redis001容器 <br>docker exec -it redis001 /bin/bash<br>
方式二
docker attach 容器名/容器ID<br>
从容器内 退出到自己服务器中
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭 <br>按【ctrl+d】或输入exit<br>
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭<br>按顺序按【ctrl+p】,【ctrl+q】<br>
停止运行的命令
<b>停止容器</b>
# 先停止咱之前运行的 redis 容器 <br>docker stop 容器名/容器ID<br>
kill 容器<br>
docker kill 容器ID/容器名<br>
删除容器
#删除一个容器<br>docker rm -f 容器名/容器ID<br>#删除多个容器 空格隔开要删除的容器名或容器ID<br>docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID<br>#删除全部容器<br>docker rm -f $(docker ps -aq)<br>
容器文件拷贝<br>(无论容器是否开启 都可以进行拷贝)
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径<br>#从容器内 拷出<br>docker cp 容器ID/名称: 容器内路径 容器外路径<br>#从外部 拷贝文件到容器内<br>docker cp 容器外路径 容器ID/名称: 容器内路径<br><br>
文件挂载
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,<br>当容器删除时,宿主机文件数据目录仍在,<br>下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复
#将 容器内指定文件挂载到了宿主机对应位置<br>-v 宿主机文件存储位置:容器内文件位置<br>
#-v命令可以多次使用,即一个容器可以同时挂载多个文件<br>-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置<br>
例子
# 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动<br>docker run -d -p 6379:6379 --name redis505 --restart=always -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"<br>
运维命令
遇到的问题一
可能有时候发布会遇到如下错误:<br><br>docker:&nbsp;write&nbsp;/var/lib/docker/tmp/GetImageBlob325372670:&nbsp;no&nbsp;space&nbsp;left&nbsp;on&nbsp;device<br><br>这个错误是docker在写入的时候报错无机器无空间<br>
解决方案
查看docker工作目录
sudo docker info | grep "Docker Root Dir"<br>
查看docker磁盘占用总体情况
du -hs /var/lib/docker/ <br>
查看Docker的磁盘使用具体情况
docker system df<br>
删除 无用的容器和 镜像
# 删除异常停止的容器<br>docker rm `docker ps -a | grep Exited | awk '{print $1}'` <br> <br># 删除名称或标签为none的镜像<br>docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`<br>
清除所有无容器使用的镜像
<font color="#ff0000">注意,此命令只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止</font>
docker system prune -a<br>
查找大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr<br>
查找指定docker使用目录下大于指定大小文件<br>
#我这里是查找 /var/lib/docker/overlay2/* 开头的且大于100m的文件<br>find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/*'<br>
docker拉取pull速度太慢解决办法
为docker配置国内镜像地址,用于在pull镜像下载加速
1. 创建配置文件daemon.json<br><br>在目录/etc/docker/daemon.json下,如果没,则创建该文件
2. 按如下格式化添加镜像地址
{<br> "registry-mirrors": [<br> "https://registry.docker-cn.com",<br> "http://hub-mirror.c.163.com",<br> "https://docker.mirrors.ustc.edu.cn"<br> ]<br>}
3. 添加完重启docker,并使用docker info 命令查看
sudo systemctl daemon-reload<br>sudo systemctl restart docker<br>sudo docker info
<b>查看日志</b>
docker查看日志的三种方式:<br><br>1.docker logs --tail=1000 容器名称 (查看容器前多少行的日志)<br><br>2.docker 容器启动后,可以进入以下位置查看日志(/var/lib/docker/containers/容器ID/容器ID-json.log)(进入容器内部查看日志)<br><br>3.docker attach 容器名称(实时查看,但是CTRL+C强制退出以后也会影响容器的进程,导致强制退出),设置 docker attach --sign-proxy=false 容器名称(实时查看日志内容)
拉取镜像,启动容器
安装并运行mysql
#拉取镜像<br>docker pull mysql:5.7
#通过镜像运行容器<br>docker run -d -p 3306:3306 -v /mydata/mysql/master/conf:/etc/mysql/conf.d -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name 101mysql mysql:5.7
# -d 是作为守护进程启动<br>docker run -d <br># 服务器真实的端口号映射 : docker 容器中的端口号<br>-p 3308:3306 <br># 配置文件的映射<br>-v /mydata/mysql/master/conf:/etc/mysql/conf.d <br># mysql 数据目录映射<br>-v /mydata/mysql/master/data:/var/lib/mysql <br>#mysql日志文件映射<br>-v /mydata/mysql/log:/var/log/mysql<br># 账号密码(docker容器内部密码)<br>-e MYSQL_ROOT_PASSWORD=123456 <br># 容器的名字<br>--name linghu-mysql-master <br>#使用的镜像<br>mysql:8.0.29
随docker服务启动而自动启动
安装并运行redis
#拉取镜像<br>docker pull redis<br>
#新建要映射的文件<br>mkdir -p /mydata/redis/conf<br>touch /mydata/redis/conf/redis.conf<br>
#运行容器<br>docker run -p 6379:6379 --name 101redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf<br>
<span style="color: rgb(255, 0, 0);">随docker服务启动而自动启动</span>
子主题
安装ElasticSearch
docker pull elasticsearch:7.4.2
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data<br>
#支持远程任何地址访问<br>echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml<br>
http.host: 0.0.0.0
冒号后面有个空格
#设置文件权限<br>chmod -R 777 /mydata/elasticsearch/<br>
启动容器
docker run --name 101elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
9200端口是发送http请求用
9300是es集群时候,集群通信使用
discovery.type=single-node 单节点模式运行
ES_JAVA_OPTS="-Xms64m -Xmx128m" #分配内存
验证
http://192.168.56.101:9200/
随docker启动而启动
docker update --restart=always 容器Id 或者 容器名<br>
安装ElasticSearch的可视化界面 kibana
docker pull kibana:7.4.2
docker run --name 101kibana -e ELASTICSEARCH_HOSTS=http://<b>192.168.56.101</b>:9200 -p 5601:5601 -d kibana:7.4.2<br>
验证
http://192.168.56.101:5601/
随docker启动而启动
docker update --restart=always 容器Id 或者 容器名<br>
安装nginx
创建 /mydata/nginx文件夹
¥随便启动一个nginx实例,复制出配置<br>docker run -p 80:80 --name nginx -d nginx:1.10<br>
cd /mydata
#将容器内的配置文件拷贝到<b>当前目录</b> ,<b><font color="#e74f4c">别忘了后面的.<br></font></b>docker container cp nginx:/etc/nginx .<b><font color="#e74f4c"><br></font></b>
整理nginx结构
docker stop nginx
docker rm nginx
cd /mydata
mv nginx conf
mkdir nginx
mv conf nginx/
docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/conf:/etc/nginx -d nginx:1.10
设置随docker启动而启动
docker update --restart=always 容器Id 或者 容器名
docker 安装kafka
获取镜像
<font color="#ff0000">docker pull bitnami/kafka:3.1.2-debian-11-r26</font><br>
镜像的官方网站:<font color="#0000ff">https://hub.docker.com/</font>
https://hub.docker.com/r/bitnami/kafka
引入gateWay
配置规则
解决全局跨域问题
收藏
收藏
0 条评论
下一页