修改docker0默认IP的正确姿势

Docker 修改docker0网桥的默认IP

原理介绍

docker服务默认会创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,相当于将所有容器和其主机都放到同一个网络。
docker默认指定docker0网桥的IP地址和子网掩码(172.17.0.1/16),使得主机和容器之间能通过网桥通信,同时还给出了MTU值,
默认是1500Bytes或宿主机网络路由上支持的默认值。可以在daemon.json中进行配置,也可以在dockerd服务配置文件中配置DOCKER_OPTS,
然后重启服务。
bip=CIDR IP地址加掩码格式,例如192.168.0.1/24
mtu=BYTES 覆盖默认的Docker MTU配置
“bip”: CIDR
“mtu”: BYTES
或者

DOCKER_OPTS="–bip=192.168.0.1/24 --mtu=1400"

配置文件

# vim /etc/docker/daemon.json
{
    "bip": 192.168.0.1/24,
    "mtu": 1400
}

修改生效

使之生效的命令如下:

# systemctl stop docker
# ip link set dev docker0 down
# brctl delbr docker0
# systemctl start docker

注意事项

该方法只适用于一部分场景,就是环境中没有运行的容器,也就是说,要想通过该方式修改docker0的IP,
需要额外做一件事情,那就是需要先保证环境中没有运行着的容器,否则是修改不成功的。

引用

(1)配置网桥docker0
(2)修改docker0的IP不生效

<think>好的,我现在需要帮用户解决两个问题:一是执行`java -jar target/ruoyi-admin.jar`时出现无法访问jar文件的错误,二是`cd ruoyi-admin`命令提示找不到文件夹。首先,我需要理清这两个问题之间的关联性,可能用户在执行cd命令失败后,路径不正确,导致后续的jar文件也无法找到。 首先看第一个问题:Error: Unable to access jarfile target/ruoyi-admin.jar。这可能是因为jar文件不存在,或者路径不正确。用户提到执行了`cd ruoyi-admin`但提示找不到目录,所以可能用户当前所在的目录不正确,导致找不到target目录下的jar文件。 接下来是`cd ruoyi-admin`失败的问题。用户确认存在该文件夹,但系统提示不存在。可能的原因包括路径大小写问题(Linux系统区分大小写)、文件夹名称拼写错误、隐藏字符、权限问题,或者符号链接失效等。 结合用户提供的引用内容,用户在部署RuoYi项目时涉及到了Dockerfile的配置和数据库连接设置。之前的回答中已经指导用户如何修改application-druid.yml,并打包生成jar文件。但用户可能在打包过程中出现了问题,导致jar文件没有正确生成,或者在错误的目录下寻找jar文件。 需要逐步排查: 1. **确认当前目录结构**:用户是否在正确的位置执行命令?比如,项目根目录下是否有ruoyi-admin模块,打包后的jar文件是否在ruoyi-admin/target目录下。 2. **检查Maven打包过程**:用户是否成功执行了`mvn clean package`,是否有构建错误导致jar文件未生成。需要查看构建日志,确认是否有编译错误或测试失败。 3. **路径问题**:用户在执行cd命令时是否存在大小写不一致,比如ruoyi-admin和RuoYi-Admin的区别?或者路径中有空格或特殊字符,需要用转义符或引号处理。 4. **文件权限问题**:可能target目录或jar文件没有读取权限,导致无法访问。需要检查权限设置,使用chmod命令修改。 5. **Docker相关配置**:用户引用了多个Dockerfile的配置,但问题可能出在本地运行而非Docker环境。需要确认用户是在本地运行还是尝试在Docker中运行,可能导致路径映射错误。 6. **环境变量和配置文件**:检查application.yml中的配置是否正确,特别是数据库连接信息,虽然这可能不影响jar文件的访问,但需要确保应用启动时不会因配置错误而中断。 接下来,需要根据这些可能性逐步指导用户进行排查。例如,先确认当前目录,使用`pwd`和`ls`命令检查是否存在target目录和jar文件。如果不存在,重新执行Maven打包并观察输出。如果有权限问题,调整权限。同时,处理cd命令失败的问题,可能需要使用绝对路径或检查文件夹名称的正确性。 另外,用户之前的问题中提到在ruoyi-admin.jar的同级目录创建Dockerfile,但当前问题似乎是在本地运行,可能需要区分Docker部署和本地运行的不同步骤。确保用户没有混淆两者的操作流程。 最后,综合所有可能性,给出分步解决方案,帮助用户逐一排除问题,确保jar文件正确生成,并且路径正确,权限足够,从而解决无法访问jar文件的问题。</think>根据问题描述和引用资料,以下是分步解决方案: ### 一、路径访问错误排查 #### 1. 文件夹存在性验证 ```bash # 使用精确匹配查找(注意Linux严格区分大小写) ls -l | grep -iE 'ruoyi-admin|rouyi-admin' # 检查隐藏字符(显示ASCII控制字符) ls -b ``` *典型输出示例:* `drwxr-xr-x 12 user 4096 ruoyi-admin` 若输出包含`rouyi-admin`或`ruo\ yi-admin`,说明存在拼写错误或空格符[^1] #### 2. 通配符访问(处理特殊字符) ```bash # 使用通配符匹配 cd r*admin # 或匹配开头字母 cd ruo* ``` #### 3. 绝对路径访问(强制定位) ```bash # 获取完整路径 find / -name 'ruoyi-admin' 2>/dev/null # 示例输出:/opt/RuoYi-Vue/ruoyi-admin cd /opt/RuoYi-Vue/ruoyi-admin ``` ### 二、Jar文件访问错误处理 #### 1. 构建路径验证 ```bash # 在项目根目录执行(确认pom.xml所在位置) mvn clean package -DskipTests # 检查构建产物 ls -l ruoyi-admin/target/ruoyi-admin*.jar ``` *正确输出应包含:* `-rw-r--r-- 1 user 46M ruoyi-admin.jar` #### 2. 常见构建失败原因 | 错误类型 | 检测命令 | 解决方案 | |-----------------------|----------------------------|---------------------------------| | **依赖缺失** | `mvn dependency:tree` | 删除`~/.m2`本地仓库重新下载 | | **JDK版本不符** | `java -version` | 配置JAVA_HOME为JDK8 | | **文件权限问题** | `ls -l target/` | `chmod 755 target/ruoyi-admin.jar` | | **构建缓存残留** | `mvn clean install` | 手动删除target目录 | #### 3. 运行时路径修正 ```bash # 正确执行姿势(在项目根目录) java -jar ruoyi-admin/target/ruoyi-admin.jar # 如果已在ruoyi-admin子目录 cd ruoyi-admin java -jar target/ruoyi-admin.jar # 必须确保target/存在 ``` ### 三、Docker集成方案(引用[2][3][5]) #### 1. 标准化Dockerfile ```dockerfile # 推荐使用官方镜像(引用[5]改进版) FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/ruoyi-admin.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] EXPOSE 8080 ``` #### 2. 构建与运行命令 ```bash # 在项目根目录执行(确保Dockerfile位置正确docker build -t ruoyi-app -f ruoyi-admin/Dockerfile . # 带网络配置运行(解决数据库连接问题) docker run -d \ --network=ruoyi-net \ -p 8080:8080 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.0.100:3306/ry-vue" \ ruoyi-app ``` ### 四、综合验证流程 1. **本地直接运行验证**: ```bash # 在项目根目录执行 mvn spring-boot:run -pl ruoyi-admin ``` 2. **容器化验证**: ```bash docker exec -it ruoyi-container sh curl localhost:8080 ``` ### 五、错误诊断表 | 错误现象 | 根本原因 | 解决方案 | |----------------------------------|----------------------------|---------------------------------| | `cd: no such file...` | 路径大小写敏感 | 使用`ls`检查实际目录名 | | `Unable to access jarfile` | 构建未完成或路径错误 | 执行`mvn clean package`重新构建 | | `Connection refused` | 数据库地址配置错误 | 检查application-druid.yml的IP配置 | | `No main manifest attribute` | 打包插件缺失 | 添加spring-boot-maven-plugin | **配置补充说明**: 在`pom.xml`中必须包含: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` [^1]: Linux系统严格区分路径大小写,`RuoYi-admin`与`ruoyi-admin`会被视为不同目录 [^2]: Maven默认构建输出到target目录,不可自定义该路径除非修改pom.xml配置 [^3]: Docker COPY指令的相对路径基于构建上下文(即Dockerfile所在目录的父目录)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值