我正在尝试执行此实验并输入以下命令:
sudo docker run -it --name bdu_spark2 -P -p 4040:4040 -p 4041:4041 -p 8080:8080 -p 8081:8081 bigdatauniversity/spark2:latest /etc/bootstrap.sh -bash
但是我收到以下错误。使用它的docker的端口8080与尝试使用它的其他软件之间是否存在冲突?我重新启动了docker并确保没有其他容器正在运行。感谢您的所有投入。
Error response from daemon: Cannot start container 3c62472fe5f8481e5ee957550078f06106b45fc6bffe25669272e2ea924b5f36: failed to create endpoint bdu_spark2 on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use
答案 0 :(得分:3)
这通常是因为另一个容器在docker主机上使用8080端口引起的。
您可以通过运行以下命令查看正在运行的容器:$ sudo docker ps
停止其他容器,或选择其他主机端口将容器的8080映射到。
答案 1 :(得分:0)
在我使用MySQL的情况下,我没有意识到这是因为我已经在该端口上运行了本机MySQL。
docker run --name db --detach --env="MYSQL_ROOT_PASSWORD=123" --publish=3306:3306 mysql:latest
我做了一个netstat --all --numeric --program --inet --timers | grep 3306
并注意到它给了我1418/mysqld
。然后我做了一个ps aux | grep mysql
并注意到/usr/sbin/mysqld
启动的进程号是我主机上的本地MySQL实例,与容器无关。
仔细检查没有使用这些端口,尤其是8080,这对于独立的Web服务器非常常见,例如IDE附带的那些。
如果您使用的是该端口,则可以使用--publish选项指定主机端口不同但仍使用容器上的相同端口。即--publish=8081:8080
,hostport:containerport。