我是docker的新手,并尝试运行以下代码并获取以下错误。
Nihits-MacBook-Pro:~ nihit$ docker container run --publish 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bc95e04b23c0: Pull complete
110767c6efff: Pull complete
f081e0c4df75: Pull complete
Digest: sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee6e65a03465392072
Status: Downloaded newer image for nginx:latest
docker: Error response from daemon: driver failed programming external connectivity on endpoint gracious_pare (0a28a065694108085e2b7533870d9d84889899baf5d4130c58c49c4736bb6b12): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).
ERRO[0016] error waiting for container: context canceled
我尝试了不同的端口代码,但所有代码都被卡住了,什么都做不了。
Nihits-MacBook-Pro:~ nihit$ docker container run --publish 3000:80 nginx
Nihits-MacBook-Pro:~ nihit$ docker container run --publish 8080:80 nginx
它们都没有工作,只是卡在终端上。
答案 0 :(得分:3)
这应该有效
docker container run --publish 3000:80 nginx:latest
由于我阅读了上面的对话,看起来你收到了一长串数字意味着docker正在运行,只需点击你会看到运行nginx的网址localhost:3000
。
如果你的计算机上安装了apache,那么php通常使用port:80
。
如果卡住它也意味着docker正在运行但不在后台运行。
通常情况下,--detach
或-d
表示docker会为您提供一长串数字,告诉docker在后台运行应用程序,这样您就不会看到终端中发生的任何事情。
答案 1 :(得分:2)
您是否介意尝试以下命令再次启动nginx?
$ docker run -d -p 80:80 nginx:latest
BTW,所有以“docker container”开头的命令似乎都是来自docker的新命令。
但是,根据https://docs.docker.com/edge/engine/reference/commandline/docker/,
“docker container run”的功能应与“docker run”相同。
不确定为什么这两个命令之间存在差异。
在我的情况下,我很少使用以“docker container”开头的命令来执行我的容器。
如果容器成功启动,shell将返回如下消息:
sh-3.2# docker run -d -p 8080:80 nginx:latest
b0a5aa7965119c5b2705392b5b9e9640a4ab8edefda6722ee86da507229cdf05
sh-3.2#
sh-3.2# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED
b0a5aa796511 nginx:latest "nginx -g 'dae... About a minute ago...