docker异常集锦

387 阅读1分钟

一、listen tcp 0.0.0.0:9001: bind

重启docker 提示: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:9001: bind

解决方法如下:

net stop winnat
net start winnat

二、Pulling invalid reference format

这个错误是镜像名称错误导致的,常见原因包括:

  • 在图像名称的末尾使用了冒号
  • 在图像名称的末尾使用了破折号
  • 使用了类似ubuntu:$VERSION的定义,但是没有在.env中设置$VERSION变量
  • 使用了多个冒号
  • 混淆了命令行参数的顺序

三、启动mysql失败

相关提示信息如下:

ERROR: for mysql  Cannot start service mysql: Ports are not available: listen tcp 0.0.0.0:3100: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Encountered errors while bringing up the project.

使用环境是WIN10的 docker桌面版,应该是docker没有操作相关端口的权限。可以按以下步骤进行查询:

  1. 查询保留端口范围 netsh int ipv4 show excludedportrange protocol=tcp

  2. 重置(管理员) netsh int ipv4 set dynamic tcp start=49152 num=1638

  3. (可选)添加一个注册表项来防止Windows容器主机网络服务(HNS)保留端口 reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f

  4. 重启

四、Window 下 wsl 无法使用 docker-compose

  1. 配置
wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         1
  docker-desktop         Running         2
  kali-linux             Stopped         1
  docker-desktop-data    Running         2
  
wsl --set-version Ubuntu-20.04 2
  1. 在docker中为 ubuntu启用wsl: image.png