Dockerfile构建Nginx访问说明

Dockerfile使用情况 20210903

Dockerfile ,Nginx

参考地址:https://yeasy.gitbook.io/docker_practice/image/build

编写简单Dockerfile

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:

复制代码
$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile

其内容为:

复制代码
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

这个 Dockerfile 很简单,一共就两行。涉及到了两条指令,FROM 和 RUN。

可以单独修改编辑docker容器的内容

复制代码
docker exec -it webserver bash  |  /bin/bash

或者

docker exec -it webserver sh |  bash  | /bin/sh

echo '<h1>Hello,Docker!<h1>' > /usr/share/nginx/html/index.html

exit

镜像构建

在 Dockerfile 文件所在目录执行:

复制代码
[root@VM_0_12_centos Dockerfile]# docker build -t nginx:v1 .
Sending build context to Docker daemon 2.048 kB
Step 1/2 : FROM nginx
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
a330b6cecb98: Pull complete 
5ef80e6f29b5: Pull complete 
f699b0db74e3: Pull complete 
0f701a34c55e: Pull complete 
3229dce7b89c: Pull complete 
ddb78cb2d047: Pull complete 
Digest: sha256:c442ff5a3d9f6dc92dd8aee388ece42d965e002805e3edaaff34e79d8ee6d0a4
Status: Downloaded newer image for docker.io/nginx:latest
 ---> 822b7ec2aaf2
Step 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
 ---> Running in 72c5984eb1fa

 ---> 2072861ac194
Removing intermediate container 72c5984eb1fa
Successfully built 2072861ac194

镜像构建上下文(Context)

docker build -t nginx:v3 . 中的这个 .,实际上是在指定上下文的目录,docker build 命令会将该目录下的内容打包交给 Docker 引擎以帮助构建镜像。

运行构建的镜像

复制代码
[root@VM_0_12_centos Dockerfile]# docker run --name nginx-v1 -p 8080:80 -d nginx:v1
7e6958716a150418412148b9f029ef7ed9f10b672e5b6f48520ed2f2968a2d67

网页验证

网页中录入地址:ip:8080

或者 命令行验证: curl ip:8080

结果:Hello, Docker!

错误

当docker的映射端口已运行,但是端口访问不通,网络端口ping不通,docker容器内可访问

curl: (56) Recv failure: Connection reset by peer

ifconfig发现docker容器和物理机的ip网段在同一网段。

  • 通过netstat看看宿主机相关端口是否listen中,端口监听是否成功: netstat -antlp | grep 8088
  • ipv4是否开启,net.ipv4.ip_forward = 1; cat /proc/sys/net/ipv4/ip_forward // 0:未开启,1:已开启
  • 宿主机的防火墙,systemctl stop firewalld
  • 容器中的相关服务是否已经开启(比如nginx、apache)
  • 容器中netstat与尝试curl一下自身的服务端口
  • 查看iptables规则 iptables -L;iptables -t nat -nL 查看端口

如果上面都没发现问题,尝试使用host连接类型,让容器直接使用宿主机的端口

查看端口: docker port 容器名/容器id

//"bip": "172.17.0.1/16",

重建docker0网桥

复制代码
$ sudo service docker stop / systemctl stop docker
$ sudo pkill docker
$ sudo iptables -t nat -F
$ sudo ifconfig docker0 down
$ sudo brctl delbr docker0
$ sudo service docker start / systemctl start docker
相关推荐
虎头金猫21 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特21 小时前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘1 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥1 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发