docker安装是参考下面两个链接,其中腾讯云的讲解我觉得更详细和专业一点。apt安装的包是docker-ce,表示社区版。
Docker教程
腾讯云 如何在Ubuntu上安装使用Docker
─────────────────────────────────────────────── 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> │
解决参考一
解决参考二,侧重于一中提到的needrestart包
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}
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可以暴力解决,估计是权限问题。
解决参考一
sudo curl
提示-bash 路径 permission denied
用sudo还是没法暴力解决,但仍然是权限问题。使用sudo su
切换到root用户,再运行有关命令即可。
/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
记得使用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内)
我搞了半天也没成功运用这个插件,就算了,但找到的好的方法还是需要贴一下。
解决参考
端口连接不对。
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即可
Bad Gateway
django容器中的服务没有启动好,重新走一遍就可以。
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中已经写过了,但为何执行无用,还需要检查一下。