【Linux/Ubuntu】 部署docker时遇到的问题

一、安装docker+docker-compose

docker安装是参考下面两个链接,其中腾讯云的讲解我觉得更详细和专业一点。apt安装的包是docker-ce,表示社区版。
Docker教程
腾讯云 如何在Ubuntu上安装使用Docker

1、apt安装包时警告kernel version版本不对

─────────────────────────────────────────────── Pending kernel upgrade ├───────────────────────────────────────────────┐
│                                                                                                                        │
│ Newer kernel available                                                                                                 │
│                                                                                                                        │
│ The currently running kernel version is 5.15.0-41-generic which is not the expected kernel version 5.15.0-43-generic.  │
│                                                                                                                        │
│ Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting.      │
│                                                                                                                        │
│                                                         <Ok>

警告-1
警告-2
解决参考一
解决参考二,侧重于一中提到的needrestart包

X、docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.

如果使用docker命令会出现这种提示,那么就是默认情况下,docker命令只能由root用户或docker组中的用户运行。要想在在运行docker命令时不输入sudo,请将用户名添加到docker组中:

sudo usermod -aG docker ${
    
    USER}

2、docker: Got permission denied while trying to connect to the Docker daemon socket at 网址: Post 网址: dial unix /var/run/docker.sock: connect: permission denie

安装完测试docker是否可以运行时,输入命令docker run --rm hello-world,跳出这个错误。在前面加上sudo可以暴力解决,估计是权限问题。
解决参考一

3、安装docker-compose时使用sudo curl提示-bash 路径 permission denied

【第二次安装直接参考官方文档敲了两行命令就好了,无任何问题,官方文档,该版本时docker compose没有短划线的(感觉有短划线的已经被淘汰了)】
用sudo还是没法暴力解决,但仍然是权限问题。使用sudo su切换到root用户,再运行有关命令即可。

4、安装完docker-compose执行命令提示/usr/local/bin/docker-compose: line 1: Not: command not found

根据docker某个教程网站使用

sudo curl -L https://download.fastgit.org/docker/compose/releases/download/2.9.0/docker-compose-`uname -s`-`uname -m` > /usr/libexec/docker/cli-plugins/docker-compose

只是修改了个版本号。经搜索发现是版本号没有加v导致的。

正确的指令应该是

sudo curl -L https://download.fastgit.org/docker/compose/releases/download/v2.9.0/docker-compose-`uname -s`-`uname -m` > /usr/libexec/docker/cli-plugins/docker-compose

5、按命令安装docker-compose后,却提示没有安装

记得使用chmod +x /usr/local/bin/docker-compose将其加权只可执行文件,不然系统就无法找到它,并且在ls模式下它是一个白色的文件,which means普通文件。加权之后会变成绿色的,也就是可执行文件。
有关compose-switch插件的使用(因为docker-compose V1使用python写的,调用语句是docker-compose,而docker-compose V2使用go写的,将它安装在docker的cli-plugins文件夹下作为插件使用,调用语句变成docker compose,算是集成在了docker内)
我搞了半天也没成功运用这个插件,就算了,但找到的好的方法还是需要贴一下。
解决参考

二、远程服务器使用

1、Screen-解决Putty链接断开程序终止问题,多窗口解决方案

Screen-解决Putty链接断开程序终止问题

三、docker部署中

1、postman访问,nginx端根本无反应

端口连接不对。

扫描二维码关注公众号,回复: 14785543 查看本文章

2、postman访问,nginx端输出一些乱码,返回400,postman显示报错Error: write EPROTO 196872:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:242:

网址中使用了https,去掉s使用http即可

3、nginx、postman可正常显示,但nginx显示502错误,postman得到Bad Gateway

django容器中的服务没有启动好,重新走一遍就可以。

4、文件传输不上去

postman传文件,返回{ "error": "The data can't be found in database. [Errno 13] Permission denied: '/usr/local/lib/python3.8/site-packages/cms/media/software packages'", "status": 101025 }
不管是小文件还是大文件都传不上去,首先排除因为nginx配置文件大小的原因。应该是文件权限问题。
在django容器映射到服务器的media文件中,发现media文件的权限没有开到最大,chmod -R 777 media即可。
奇怪的是该语句在web容器的Dockerfile中已经写过了,但为何执行无用,还需要检查一下。

猜你喜欢

转载自blog.csdn.net/qq_42438771/article/details/126138964