我有一个在其说明中使用"EXPOSE 8000"构建的docker容器.我开始这样的过程:
sudo docker run -t -i -P imagename
Run Code Online (Sandbox Code Playgroud)
容器中的进程正在监听8000.
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:8000 *:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
#
Run Code Online (Sandbox Code Playgroud)
在主机(即容器外),我看到端口49164绑定到容器端口8000:
[S-22]jeff@siegfried:~ $ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b0e333c6ec9 lkz:latest "/bin/bash" About an hour ago Up 6 minutes 0.0.0.0:49164->8000/tcp lkxyz__2015-01-18_202737
[S-22]jeff@siegfried:~ $
Run Code Online (Sandbox Code Playgroud)
Inded,docker inspect说(除其他外) …
即使在 docker-compose.yml 文件中添加端口映射后,我也无法使用容器来侦听端口 8000。
所有相关文件都可以在这里找到: https: //github.com/salvatore-esposito/laravel-dockerized
我运行了以下命令:docker-compose exec app php artisan serve并且它已成功运行。
无论如何,如果我进入容器内部,curl 会按预期工作,但从外部不起作用。连接被拒绝。
我使用获取ipdocker-machine ip
请注意,我通过 docker-compose.yml 映射了容器中的外部-内部端口,即使在存储库中没有映射。
我尝试将所有文件复制到构建的映像并启动:
docker run --rm -p 8000:8000 --name laravel salvio/php-laravel php artisan serve
和
docker exec -it laravel bash
再一次,如果运行“curl localhost:80”和“curl localhost:8000”,前者不起作用,后者起作用,而如果我通过 docker检查 name_container 和数字curl ip_of_container:8000获取容器的ip则什么也没有。