外部访问docker里面nginx服务提示链接被重置该如何解决?

小七哥
  • 163

最近在学docker,我通过docker pull下载了一个ubuntu18.04的镜像,然后通过命令:

docker run -it ubuntu:18.04 /bin/bash

进入了该镜像的容器内容,然后在该容器内部执行了如下命令:

2  apt install php7.4
3  apt update
4  apt install php7.4
5  apt install php
6  php -v
7  add-apt-repository ppa:ondrej/php
8  apt-get install software-properties-common
9  add-apt-repository ppa:ondrej/php

10 apt-get update
11 apt install php7.4
12 php -v
13 apt install nginx1.18
14 apt install nginx 1.18
15 apt install nginx
16 nginx -v
17 apt install mysql
18 mysql -v
19 apt install mysql-server
20 mysql -v
21 mysql --version
22 apt install mysql-server
23 find / -name 'nginx.conf'
24 docker diff
25 service nginx start
26 ping localhost:90
27 curl
......

分别安装了php7.4 nginx mysql服务,一切都安装完毕,然后通过commit命令新作了一个镜像:

docker commit --author "yhm" --message "安装了nginx,php,mysql服务" b30e4ee306b6
sha256:64bb154a76245b760aa314924b97d64bc8c4fddaf954ccd2a6a3903c16a1587d

然后通过命令:

docker run -it -p 8009:80 ubuntu:18.04

启动了该镜像,但是在本地通过浏览器访问 http://localhost:8009,却一直提示:无法访问此网站,连接已重置。

补充一下,我在容器里面通过 curl localhost 是没有问题的,访问到了nginx的默认首页。

另外我通过监控nginx的访问日志文件,也没看到通过本地主机的访问记录,通过容器内的curl访问的记录倒是有。

请问是哪里出问题了吗?

回复
阅读 1.2k
1 个回答

你每一次允许的docker都是一个新的ubuntu:18.04里面怎么可能有服务。
docker是一个镜像,除了通过数据卷同步数据之外,一般都是无状态的。你进去docker然后安装一堆乱七八糟到,停止了这些数据就没了。
你这种需要在内部定制的是需要自己构建docker镜像,然后再运行。
参见 Dockerfile

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏