Linux开发环境配置(Docker)
安装Docker
- 删除老版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装工具包并设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
Docker使用
- 启动docker
sudo systemctl start docker
-
设置开机启动docker
- 检查docker版本
docker -v
- 查看docker已有镜像
sudo docker images
- 设置docker开机启动
sudo systemctl enable docker
- 检查docker版本
-
设置国内镜像仓库
参考:阿里云镜像加速服务
# 创建文件
sudo mkdir -p /etc/docker
# 修改配置, 设置镜像
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vw9qapdy.mirror.aliyuncs.com"]
}
EOF`在这里插入代码片`
# 重启后台线程
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
MySQL of Docker
- docker安装mysql
sudo docker pull mysql
- docker启动
mysql5.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
mysql8
docker run --name mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/mydata/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/mydata/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql
参数:
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
–name:给容器命名
-v /mydata/mysql/log:/var/log/mysql:将配置文件挂载到主机/mydata/…
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码为root
-e:pwd=“xxx”,设置环境变量
–restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
-mount:绑定挂载
-
配置mysql
-
进入挂载的mysql配置目录
cd /mydata/mysql/conf
-
修改配置文件 my.cnf
vi my.cnf
拷贝以下内容:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve # Esc # :wq
-
docker重启mysql使配置生效
docker restart mysql
-
Nginx of docker
https://blog.csdn.net/BThinker/article/details/123507820
Redis of Docker
- docker拉取redis镜像
docker pull redis
-
docker启动redis
-
创建redis配置文件目录
mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf
-
启动redis容器
docker run -p 6379:6379 --name redis \ -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf
-
-
配置redis持久化
更多redis配置参考:redis配置
echo "appendonly yes" >> /mydata/redis/conf/redis.conf
#重启生效
docker restart redis
- 容器随docker启动自动运行
# mysql
docker update mysql --restart=always
# redis
docker update redis --restart=always
解释:
Docker中每一个容器都是独立运行的,相当于一个独立的linux系统,如果想便捷地修改容器内的文件,我们就需要把容器目录挂载到主机的目录上。容器端口类似,外界无法直接访问容器内部的端口,需要先将容器端口映射到linux主机端口上才能访问。
Elastisearch-介绍及安装
全文搜索属于最常见的需求,开源的 Elasticsearch(https://www.elastic.co/) (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
基本概念
Index(索引)
Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
- 动词,相当于mysql的insert
- 名词,相当于mysql的database
Type(类型)
在 Index(索引)中,可以定义一个或多个类型。
类似于 MySQL 的 Table,每一种类 型的数据存放在一起。
在Elasticsearch6.0之后,Type 类型被移除。
Document(文档)
保存在某个 Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document 就像是 MySQL 中某个 Table 里面每一行的数据,字段就是Document里的属性。
倒排索引
Docker安装Elasticsearch、Kibana
- 下载镜像文件
# 存储和检索数据
docker pull elasticsearch:7.4.2
# 可视化检索数据
docker pull kibana:7.4.2
- 配置挂载数据文件夹
# 创建配置文件目录
mkdir -p /mydata/elasticsearch/config
# 创建数据目录
mkdir -p /mydata/elasticsearch/data
# 将/mydata/elasticsearch/文件夹中文件都可读可写
chmod -R 777 /mydata/elasticsearch/
# 配置任意机器可以访问 elasticsearch
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
- 启动Elasticsearch
命令后面的 \是换行符,注意前面有空格
docker run --name elasticsearch -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
- -p 9200:9200 -p 9300:9300:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口;
-e “discovery.type=single-node”:es 以单节点运行
-e ES_JAVA_OPTS=“-Xms64m -Xmx512m”:设置启动占用内存,不设置可能会占用当前系统所有内存
-v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;
-d elasticsearch:7.6.2:指定要启动的镜像
访问 IP:9200 看到返回的 json 数据说明启动成功。
- 设置 Elasticsearch 随Docker启动
# 当前 Docker 开机自启,所以 ES 现在也是开机自启
docker update elasticsearch --restart=always
- 启动可视化Kibana
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.163.131:9200 \
-p 5601:5601 \
-d kibana:7.4.2
-e ELASTICSEARCH_HOSTS=http://192.168.163.131:9200
: 这里要设置成自己的虚拟机IP地址
浏览器输入192.168.163.131:5601 测试:
- 设置 Kibana 随Docker启动
# 当前 Docker 开机自启,所以 kibana 现在也是开机自启
docker update kibana --restart=always
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗