Linux入门教程:P12->压缩解压类

本文概述了Linux下的三种文件压缩方法,包括gzip/gunzip的基本操作,zip/unzip的文件与目录压缩,以及tar工具的打包与解包。通过实例演示了如何使用这些工具管理和压缩文件,适合Linux初学者学习。

本系列文章为尚硅谷武晟然老师的Linux入门教程学习笔记,前面的系列文章链接如下
Linux入门教程:P3->Linux文件系统
Linux入门教程:P4->Vim编辑器
Linux入门教程:P5->网络配置
Linux入门教程:P6->系统管理
Linux入门教程:P7->Shell介绍
Linux入门教程:P8->文件目录类
Linux入门教程:P9->时间日期类
Linux入门教程:P10->用户权限类
Linux入门教程:P11->文件查找类


一、gzip/gunzip压缩

gzip/gunzip

基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
经验技巧:
①只能压缩文件不能压缩目录
②不保留原来的文件
③同时多个文件会产生多个压缩包
示例: 我们这里有一个7M的文件,使用gzip进行压缩,可以发现压缩到3M。
在这里插入图片描述


二、zip/unzip压缩

zip/unzip

基本语法:
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
选项说明:
zip选项:-r 压缩目录
unzip选项:-d <目录> 指定解压后文件的存放目录
注: zip压缩命令在windows/linux都通用,可以压缩目录且保留源文件。
示例: 由于zip可以保

<think>我们正在处理一个关于Docker中Elasticsearch 8.14.3容器无法通过curl访问的问题,具体错误是"connection reset by peer"。这通常与SSL/TLS配置或网络配置有关。Elasticsearch 8.x版本默认启用了安全特性(包括SSL),因此我们需要确保使用HTTPS并正确配置证书。 根据用户的问题,我们尝试访问集群健康状态,通常的命令是: curl -u elastic:password https://localhost:9200/_cluster/health --insecure 但是出现连接重置(connection reset by peer)错误,这可能是由于: 1. 端口未正确映射:确保9200端口映射到宿主机。 2. SSL证书问题:可能因为自签名证书不被信任,或者curl命令没有跳过证书验证(使用--insecure)或使用正确的证书。 3. 网络配置:Elasticsearch绑定地址可能不是0.0.0.0,导致无法从宿主机访问。 4. 防火墙或安全组设置。 我们首先检查Docker运行命令,确保端口映射正确。例如: docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.14.3 其次,Elasticsearch 8.x在第一次启动时会生成安全证书,并输出一个包含默认用户(elastic)和密码的提示。如果用户没有记录,可以进入容器内部重置密码。 另外,由于默认使用HTTPS,我们必须使用https://协议访问。同时,如果使用自签名证书,可以添加`-k`或`--insecure`来忽略证书验证。 但是,如果问题仍然存在,我们可以尝试以下步骤: 步骤1:检查容器日志 docker logs elasticsearch 步骤2:进入容器内部,检查Elasticsearch的配置(/usr/share/elasticsearch/config/elasticsearch.yml)和绑定地址。 步骤3:检查容器内的9200端口是否监听在0.0.0.0: 在容器内执行:netstat -ntlp | grep 9200 步骤4:尝试在容器内使用curl访问localhost:9200,看是否正常。 步骤5:如果容器内正常,但宿主机访问不了,可能是端口映射问题或防火墙。 步骤6:调整Elasticsearch配置,将绑定地址设置为0.0.0.0(如果尚未设置): network.host: 0.0.0.0 但是,在Docker环境中,通常通过环境变量来设置,例如: -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" -e "xpack.security.enabled=false" [注意:不推荐在生产环境关闭安全] 然而,Elasticsearch 8.x默认强制开启安全,所以不能直接关闭。我们可以通过以下方式重置密码或者获取初始密码。 如果用户已经丢失初始密码,可以进入容器内部重置: docker exec -it elasticsearch bash bin/elasticsearch-reset-password -u elastic # 重置elastic用户的密码 然后使用新密码进行访问。 另外,如果用户希望使用http访问(不推荐),需要修改配置(但8.x版本默认不允许http访问,需要显式配置): 在elasticsearch.yml中添加: xpack.security.enabled: false 但是,从8.0开始,不支持同时禁用安全传输层(TLS)和安全特性。因此,我们可能需要同时配置传输层。 不过,更推荐使用HTTPS。 考虑到错误是“connection reset by peer”,这通常发生在TCP连接建立之后,但在TLS握手完成之前被重置。因此,最可能的原因是证书问题或客户端不支持服务端要求的协议版本。 我们可以尝试使用以下命令来获取集群健康状态(假设我们已知密码): curl --cacert /path/to/ca.crt -u elastic:password https://localhost:9200/_cluster/health 但是,在Docker环境中,证书通常位于容器内的`/usr/share/elasticsearch/config/certs`目录下。我们可以将证书复制到宿主机,然后使用。 另外,在第一次启动时,Elasticsearch会在控制台输出证书的指纹,我们可以使用`--insecure`忽略证书错误(仅用于测试): curl -k -u elastic:password https://localhost:9200/_cluster/health 如果上述命令可以工作,说明问题在于证书。 但是,如果仍然出现“connection reset by peer”,则可能是网络问题。我们可以尝试使用其他工具(如openssl)测试端口连通性: openssl s_client -connect localhost:9200 如果openssl连接成功,则说明端口是开放的,可能是curl的某些问题。如果连接被重置,则可能是Elasticsearch服务没有正确监听,或者防火墙问题。 另外,注意Elasticsearch 8.x默认使用TLSv1.3,确保本地curl支持。 总结解决方案: 1. 确保容器正在运行,端口映射正确(-p 9200:9200)。 2. 使用HTTPS和正确的端口(9200)。 3. 使用`-k`选项忽略证书验证(测试)。 4. 使用正确的用户名和密码(elastic用户和其密码)。 5. 检查容器日志,确认服务启动无错误。 6. 检查绑定地址是否为0.0.0.0。 如果上述步骤无效,可以尝试重新生成证书或调整配置。 下面是一个示例的docker run命令,其中包含了必要的环境变量和挂载配置(如果需要自定义配置): docker run -d --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \ -e "xpack.security.http.ssl.enabled=true" \ -v /path/to/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /path/to/certs:/usr/share/elasticsearch/config/certs \ docker.elastic.co/elasticsearch/elasticsearch:8.14.3 注意:在自定义配置中,确保已经配置了绑定地址和SSL证书路径等。 最后,如果用户是在本地测试,可以尝试暂时关闭防火墙。 相关问题: 1. 如何重置Elasticsearch用户的密码? 2. 如何为Elasticsearch生成自签名证书? 3. 如何配置Elasticsearch以允许HTTP访问(不推荐)? 4. 如何解决Docker容器网络问题导致的连接问题? 5. 如何查看Elasticsearch容器的日志? 6. 如何修改Elasticsearch的绑定地址?</think>### 解决 Elasticsearch 8.14.3 Docker 容器无法通过 curl 访问的问题 #### 问题分析 当出现 `curl: (56) Recv failure: Connection reset by peer` 错误时,通常由以下原因导致: 1. **SSL/TLS 配置问题**:Elasticsearch 8.x 默认强制启用 HTTPS 2. **证书验证失败**:curl 未正确忽略自签名证书 3. **绑定地址限制**:容器未暴露 0.0.0.0 4. **密码认证缺失**:未提供初始密码 --- ### 解决方案 #### 步骤 1:检查容器端口映射 确保启动命令正确映射 9200 端口: ```bash docker run -d --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ docker.elastic.co/elasticsearch/elasticsearch:8.14.3 ``` #### 步骤 2:获取初始密码 Elasticsearch 首次启动会生成随机密码: ```bash docker exec -it elasticsearch \ bin/elasticsearch-reset-password -u elastic -i # 按提示设置新密码(如:your_secure_password) ``` #### 步骤 3:使用 HTTPS + 忽略证书验证 正确 curl 命令格式: ```bash curl -k -u elastic:your_secure_password \ https://localhost:9200/_cluster/health?pretty ``` 关键参数: - `-k`:忽略自签名证书验证 - `-u`:提供用户名密码 #### 步骤 4:检查绑定地址 进入容器确认监听地址: ```bash docker exec -it elasticsearch bash netstat -tuln | grep 9200 # 应显示:tcp6 0 0 :::9200 :::* LISTEN ``` #### 步骤 5:查看日志定位问题 ```bash docker logs elasticsearch | grep -E "ERROR|WARN" ``` 重点关注: - SSL 证书初始化状态 - 网络绑定错误 - 认证系统错误 --- ### 高级排查 如果仍失败,尝试以下操作: 1. **强制重新生成证书**: ```bash docker run ... -e xpack.security.http.ssl.enabled=true \ -e xpack.security.http.ssl.keystore.path=certs/elastic-certificates.p12 \ -e xpack.security.http.ssl.keystore.password=$(openssl rand -base64 12) ``` 2. **临时关闭安全模式(仅测试)**: ```bash docker run ... -e xpack.security.enabled=false ``` 3. **检查防火墙规则**: ```bash sudo ufw status # Ubuntu firewall-cmd --list-ports # CentOS ``` --- ### 典型成功响应 ```json { "cluster_name" : "docker-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 } ``` [^1]: Elasticsearch 安全文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup.html
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知初与修一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值