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