试图在docker上启动一个图像

我正在尝试做这个实验,并input以下命令:

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和其他软件试图使用它之间有冲突吗? 我已经重新启动泊坞窗,并确保没有其他容器正在运行。 感谢所有的投入。

 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 

这通常是因为另一个容器在您的docker主机上使用了8080端口。

您可以通过运行$ sudo docker ps来查看正在运行的容器

要么停止另一个容器,要么select一个不同的主机端口来映射你的容器的8080。

在我的情况下这样做与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 netstat --all --numeric --program --inet --timers | grep 3306 ,注意到它给了我1418/mysqld 。 然后我做了一个ps aux | grep mysql ps aux | grep mysql并注意到这是由/usr/sbin/mysqld启动的同一进程号,这是我的主机上的本地MySQL实例,与容器无关。

仔细检查,没有什么是使用这些端口,特别是8080,这是独立的Web服务器,如IDE随附的那些非常常见。

如果您正在使用该端口,则可以使用–publish选项将主机端口指定为不同,但仍然使用容器上的相同端口。 即--publish=8081:8080 ,hostport:containerport。