docker容器和k8s的一些疑难杂症问题
这几天,我在弄 docker 和 k8s 的时候,遇到了不少疑难杂症。有一些解决了之后,不记得了。剩下几个先记下了,留念。
No1. 二级域名疑难杂症
问题发生于二级域名配置完成并且ssl证书上传到服务器之后,postman 请求二级域名接口,返回一下错误:
Error: connect ECONNREFUSED 43.138.16.20:443
View in ConsoleLearn more about troubleshooting API requests
解决方式: 服务器的防火墙问题。这个服务器的防火墙和云服务器控制台安全组的防火墙不一样的功能。所以关闭服务器防火墙,或者仅仅放行必要的服务接口才能解决这个问题。
No2. docker 疑难杂症
➜ todo-list git:(main) ✗ docker build .
[+] Building 0.9s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/debian:buster-slim 0.8s
=> CANCELED [internal] load metadata for docker.io/library/rust:latest 0.8s
——
> [internal] load metadata for docker.io/library/debian:buster-slim:
——
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed commit on ref “unknown-sha256:c5c1de4b2152642e09105b6f102ad11b66cbb662f607a0a554ddf3748cdce488”: “unknown-sha256:c5c1de4b2152642e09105b6f102ad11b66cbb662f607a0a554ddf3748cdce488” failed size validation: 9173 != 8875: failed precondition
[+] Building 0.9s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/debian:buster-slim 0.8s
=> CANCELED [internal] load metadata for docker.io/library/rust:latest 0.8s
——
> [internal] load metadata for docker.io/library/debian:buster-slim:
——
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed commit on ref “unknown-sha256:c5c1de4b2152642e09105b6f102ad11b66cbb662f607a0a554ddf3748cdce488”: “unknown-sha256:c5c1de4b2152642e09105b6f102ad11b66cbb662f607a0a554ddf3748cdce488” failed size validation: 9173 != 8875: failed precondition
解决办法:方法一,配置国内源,可以解决大部分问题;方法二,科学上网,彻底解决。
No3. docker容器起来了,但是端口拒绝访问
第一是要确认 Dockerfile 里面将 的端口暴露出来。
第二需要将程序中的 ip 从 localhost 或者 127.0.0.1 改为 0.0.0.0 , 重新 打包
docker build -t myapp .
docker run myapp -d -p 8000:8000
最后定位到 是需要把 myapp 这个build生成的镜像放到整个 docker run 命令最后的位置才行。
Kubernetes 还是一个巨大的工程。