我正在尝试将$ docker-compose up -d
用于项目,并收到此错误消息:
错误:API无法启动服务API:驱动程序未能编程端点dataexploration_api_1外部连接(8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117):错误启动用户级代理:MKDIR /port/tcp:0.0.0.0:9000:tcp:172.19.0.2:80:输入/输出错误 在启动项目时遇到错误。
我想知道它是否可能是端口?我以前一直在尝试端口8080。该项目最初是在mac上设置的,我已经从gitHub克隆了存储库。
提前非常感谢你!
答案 0 :(得分:195)
我在管理员模式下使用Windows Powershell x86在Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0上收到了相同的错误消息。
解决方案是简单地重启Docker。
答案 1 :(得分:53)
如果发生一次,重启Docker将完成工作。就我而言,每次重新启动计算机时都会发生这种情况。
在这种情况下,MockFileDatabase
,或者您可能会在每次启动计算机时重新启动Docker。该解决方案来自disable Fast Startup
答案 2 :(得分:41)
简单地重新命名Docker并不能在Windows 10上解决我的问题。
就我而言,我通过以下确切步骤解决了该问题:
1)关闭“ Docker桌面”
2)运行以下命令:
net stop com.docker.service
net start com.docker.service
3)再次启动“ Docker Desktop”
希望这会对其他人有所帮助。
答案 3 :(得分:6)
答案 4 :(得分:3)
我也遇到了该错误,如果您想知道发生错误的主要原因,这是因为docker已经在运行类似的容器,要解决该问题(避免重新启动Docker),您必须:
docker container ls
您得到了类似的东西:
CONTAINER ID IMAGE COMMAND CREATED
1fa4ab2cf395 friendlyhello "python app.py" 28 seconds ago
这是正在运行的容器的列表,带有容器ID(复制 Ctrl + C )
现在您必须结束该过程(并运行另一个图像)来运行此命令。
docker container stop <CONTAINER_ID>
仅此而已!现在您可以创建容器了。
答案 5 :(得分:2)
在我的情况下,问题是docker容器(Nginx)使用80端口,而IIS使用相同的端口。在IIS中设置另一个端口可以解决问题
答案 6 :(得分:2)
通常,当您尝试启动一个容器但该容器需要的端口被占用时,通常会发生此错误,通常是由同一个Docker占用的,这是由于最近一个错误的进程停止所致。
对我来说解决方案是:
netstat -oan
来查找占用您端口的进程(Docker是该进程):在我的情况下,我的docker端口是3306 6001 8000 9001。
现在我们需要释放该端口,因此我们要通过输入
的PID(列PID)终止该进程。TASKKILL /PID 9816 /F
重新启动docker。
致谢。
答案 7 :(得分:1)
在大多数情况下,您应该考虑的第一种情况是正在运行并使用该端口的旧服务。 就我而言,由于我更改了映像名称,因此在使用docker-compose停止(然后启动)时,它不会停止旧容器(服务),导致无法启动新容器。
答案 8 :(得分:0)
一个较晚的答案,但我将其留在此处可能会帮助其他人
在Mac和docker大量重启后的Mac mojave上
我不得不sudo apachectl stop
。
答案 9 :(得分:0)
解决此问题的最简单方法是重新启动docker。但是在某些情况下,即使端口中没有正在运行的容器,它也可能无法正常工作。您可以使用docker ps
命令检查正在运行的容器,并可以查看之前未清除但退出的所有容器使用docker ps -a
命令。
想象一下,有一个容器的容器ID为8e35276e845e
。您可以使用命令docker rm 8e35276e845e
或docker rm 8e3
结束容器。请注意,前3个字符串是该特定docker容器ID的ID。因此,根据上述情况, 8e3 是 8e35276e845e 的ID。
如果重新启动不起作用,您可以尝试更改 docker-compose.yml 文件中的服务端口,然后根据apache端口,您必须更改虚拟主机(如果有)。这将解决您的问题。
例如:
build:
context: ./apache
dockerfile: Dockerfile
working_dir: /var/www/
volumes:
- .:/var/www
networks:
- app-network
ports:
- 8082:80
depends_on:
- mysql_db
应更改为
apache_server:
build:
context: ./apache
dockerfile: Dockerfile
working_dir: /var/www/
volumes:
- .:/var/www
networks:
- app-network
ports:
- 8083:80
depends_on:
- mysql_db
并且特定的虚拟主机也必须更改,
Ex(根据上述情况):
<VirtualHost *:80>
ProxyPreserveHost On
ServerAlias phpadocker.lk
ProxyPass / http://localhost:8083/
ProxyPassReverse / http://localhost:8083/
</VirtualHost>
这将帮助您解决上述问题。
答案 10 :(得分:0)
对于许多存在相同问题的Windows用户,我建议也重新启动计算机,因为在大多数情况下(至少对我而言),仅Docker无法启动。因此,我建议您按照以下步骤操作:
然后以管理员身份启动PowerShell并运行此程序:
Set-NetConnectionProfile -interfacealias“ vEthernet(DockerNAT)” -NetworkCategory Private
之后,重新启动Docker。
完成这些步骤后,您将可以毫无问题地运行。 希望对您有所帮助。