试图在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。