常见错误

185 阅读5分钟

docker常见错误

1.宿主机和docker hub时间不一致

时间不一致会导致docker search 或者 docker pull 这些命令无法使用 报错信息:

 Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: x509: certificate has expired or is not yet valid

解决方法:更新宿主机的系统时间

 # 1.安装时间同步
 sudo yum -y install ntp ntpdate
 # 2.同步时间
 sudo ntpdate cn.pool.ntp.org
 # 3.查看本机时间
 date
 # 4.从新测试
 docker search mysql

2.使用docker-compose命令启动nginx报错

背景:在启动nginx前,我重启了防火墙,然后使用docker-compose up -d命令创建nginx容器报错,报错信息如下:

 ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-944d3afa35ff -j RETURN: iptables: No chain/target/match by that name.

解决方法:重新启动docker服务,让后再使用docker-compose up -d命令创建容器

参考链接

3.使用docker-compose.yml启动nginx报错

docker-compose.yml内容如下:

  version: '3'
  services:
    nginx:
      image: daocloud.io/library/nginx:1.16.1                 # 镜像`nginx:1.21.1`
      container_name: nginx-8001               # 容器名为'nginx'
      restart: unless-stopped                                       # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
      volumes:                            # 数据卷挂载路径设置,将本机目录映射到容器目录
        - "./nginx-8001/conf/nginx.conf:/etc/nginx/nginx.conf"
        - "./nginx-8001/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf"
        - "./nginx-8001/html:/usr/share/nginx/html"
        - "./nginx-8001/log:/var/log/nginx"          
      environment:                        # 设置环境变量,相当于docker run命令中的-e
        TZ: Asia/Shanghai
        LANG: en_US.UTF-8
      ports:                              # 映射端口
        - "8001:80"

报错信息:

  Recreating nginx-8001 ... error
  
  ERROR: for nginx-8001  Cannot start service nginx: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused "rootfs_linux.go:58: mounting "/usr/local/docker/nginx/nginx-8001/conf/nginx.conf" to rootfs "/var/lib/docker/overlay2/4a263e113c6dcc97f905236726fa834326b414fb45d45ae00f67337e59281cc9/merged" at "/var/lib/docker/overlay2/4a263e113c6dcc97f905236726fa834326b414fb45d45ae00f67337e59281cc9/merged/etc/nginx/nginx.conf" caused "not a directory""": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
  
  ERROR: for nginx  Cannot start service nginx: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused "rootfs_linux.go:58: mounting "/usr/local/docker/nginx/nginx-8001/conf/nginx.conf" to rootfs "/var/lib/docker/overlay2/4a263e113c6dcc97f905236726fa834326b414fb45d45ae00f67337e59281cc9/merged" at "/var/lib/docker/overlay2/4a263e113c6dcc97f905236726fa834326b414fb45d45ae00f67337e59281cc9/merged/etc/nginx/nginx.conf" caused "not a directory""": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
  ERROR: Encountered errors while bringing up the project.

错误原因docker-compose挂载的nginx.conf和default.conf配置文件在宿主机中没有

jackson配置自定义filter报错

1.情景再现

我在实体类的基类上加了一个注解:

 @JsonFilter("excludesFilter")
 public class BaseEntity implements Serializable

并配置自定义filter

 @Bean
 public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
     return jacksonObjectMapperBuilder -> {
         jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
         jacksonObjectMapperBuilder.serializerByType(SexEnum.class, new SexEnumSerializer());
         jacksonObjectMapperBuilder.deserializerByType(SexEnum.class, new SexEnumDeserializer());
         SimpleFilterProvider simpleFilterProvider = new SimpleFilterProvider();
         SimpleBeanPropertyFilter simpleBeanPropertyFilter = SimpleBeanPropertyFilter.serializeAllExcept("");
         simpleFilterProvider.addFilter("excludesFilter",simpleBeanPropertyFilter);
         jacksonObjectMapperBuilder.filters(simpleFilterProvider);
     };
 }

启动项目报错:

 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sysDictTypeServiceImpl': Invocation of init method failed; nested exception is org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Cannot resolve PropertyFilter with id 'excludesFilter'; no FilterProvider configured (through reference chain: java.util.ArrayList[0]); nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot resolve PropertyFilter with id 'excludesFilter'; no FilterProvider configured (through reference chain: java.util.ArrayList[0])
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
     at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
     at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657)
     ... 25 common frames omitted
 Caused by: org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Cannot resolve PropertyFilter with id 'excludesFilter'; no FilterProvider configured (through reference chain: java.util.ArrayList[0]); nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot resolve PropertyFilter with id 'excludesFilter'; no FilterProvider configured (through reference chain: java.util.ArrayList[0])
     at org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer.serialize(GenericJackson2JsonRedisSerializer.java:120)
     at org.springframework.data.redis.core.AbstractOperations.rawValue(AbstractOperations.java:127)
     at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:235)
     at com.ruoyi.common.core.redis.RedisCache.setCacheObject(RedisCache.java:36)
     at com.ruoyi.common.utils.DictUtils.setDictCache(DictUtils.java:31)
     at com.ruoyi.system.service.impl.SysDictTypeServiceImpl.loadingDictCache(SysDictTypeServiceImpl.java:145)
     at com.ruoyi.system.service.impl.SysDictTypeServiceImpl.init(SysDictTypeServiceImpl.java:41)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
     ... 37 common frames omitted
 Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot resolve PropertyFilter with id 'excludesFilter'; no FilterProvider configured (through reference chain: java.util.ArrayList[0])
     at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
     at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1276)
     at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)
     at com.fasterxml.jackson.databind.ser.std.StdSerializer.findPropertyFilter(StdSerializer.java:426)
     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFieldsFiltered(BeanSerializerBase.java:811)
     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeWithType(BeanSerializerBase.java:653)
     at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeTypedContents(IndexedListSerializer.java:181)
     at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:92)
     at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:18)
     at com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.serializeWithType(AsArraySerializerBase.java:267)
     at com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
     at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4487)
     at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3765)
     at org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer.serialize(GenericJackson2JsonRedisSerializer.java:118)
     ... 50 common frames omitted
 Disconnected from the target VM, address: '127.0.0.1:7012', transport: 'socket'

报错原因,redis序列化用的jackson工具,但是配置redis的时候没有加自定义filter导致的报错

修改redis配置:

 SimpleFilterProvider simpleFilterProvider = new SimpleFilterProvider();
 simpleFilterProvider.addFilter("excludesFilter",SimpleBeanPropertyFilter.serializeAllExcept(""));
 objectMapper.setFilterProvider(simpleFilterProvider);
 // 配置null值的序列化器
 GenericJackson2JsonRedisSerializer.registerNullValueSerializer(objectMapper, null);
 return new GenericJackson2JsonRedisSerializer(objectMapper);

centos中常见错误

1.安装jq报错No package jq available

安装EPEL仓库

 sudo yum install epel-release

这个命令的作用是在基于RHEL(Red Hat Enterprise Linux)或其衍生版本如CentOS、Fedora等的系统上安装EPEL(Extra Packages for Enterprise Linux)仓库。

EPEL是一个由Fedora社区维护的高质量软件包仓库,它为RHEL及类似系统提供了大量额外的软件包。这些软件包可能在默认的RHEL/CentOS仓库中没有提供,或者提供的版本较旧。通过添加EPEL仓库,你可以访问到更多的软件包和更新的软件版本。

当你执行yum install epel-release命令时,系统会下载并安装EPEL的发布包,该发布包包含了EPEL仓库的配置文件,这将使得你的系统可以使用yum命令从EPEL仓库下载和安装软件包。一旦安装完成,你就可以使用yum update来更新系统,或者用yum install <package_name>来安装EPEL仓库中的软件包了。

然后清理缓存和重建缓存

 # 清理软件仓缓存
 sudo yum clean all
 # 重建软件仓缓存
 sudo yum makecache

重新安装jq

 yum install jq