.Net6(4)MinimalAPI Docker容器化体验

序言

 

Docker+Centos7部署

1.新建WebApi项目

项目引入了Dockerfile ,不启用docker容器调试

 Dockerfile始终复制

 对Dockerfire 进行修改

2.发布项目

D:\Net\Git\CommonProjectSolution\CommonProjectSolution\MinimalAPI.Net6.WebApi\bin\Release\net6.0\publish

 

https://localhost:5001/WeatherForecast

改好后进行发布:发布完成后上传到服务器Dockerfire文件所在的目录中

 

3.创建容器

使用命令运行该Dockerfire文件创建容器

  删除:docker rm -f minimalapi

  命令:docker build -t  minimalapi .  

数分解:

  • -t ---指定镜像名称
  • 命令结尾处 ---表示build上下文为当前目录,默认情况下docker会使用在上下文的根目录下找到Dockerfile文件

  这个命令需要注意的是 镜像名称 不要使用大写 镜像名称后的 “点”不要忽略了

创建容器:

  命令:docker run  --name minimalapi -d -p 5000:80 minimalapi

参数说明

  • -d ,表示在后台以守护态(daemonized)形式运行容器

  • -p 外部端口与内部容器端口映射。

  • --name 指定容器的名称。当然可以不指定,默认会为我们创建

4.在CentOS7上可以直接访问,但是在宿主机上无法访问。

5.解决在宿主机上无法访问的问题

WARNING: IPv4 forwarding is disabled. Networking will not work.

解决方式:

第一步:在宿主机上执行echo “net.ipv4.ip_forward=1” >>/usr/lib/sysctl.d/00-system.conf

[root@VM-16-14-centos ~]# echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
[root@VM-16-14-centos ~]# cat /usr/lib/sysctl.d/00-system.conf
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
net.ipv4.ip_forward=1

第二步:重启network和docker服务

[root@localhost /]# systemctl restart network && systemctl restart docker

第三步:验证是否成功

可见完美解决问题。

http://192.168.229.133:5000/weatherforecast

运行容器

sudo docker run minimalapi

docker start minimalapi

docker logs minimalapi

查看容器的详细信息

docker inspect minimalapi

查看结果:docker ps -a

docker images

docker ps -a

http://192.168.229.133:5000/weatherforecast

curl http://localhost:5000

这里如果docker run失败后再次运行会提示名称已存在,可以使用以下命令来删除容器

查看防火墙

firewall-cmd --state

sudo systemctl start firewalld

sudo systemctl stop firewalld

使用docker搭建web服务器,提示无法访问此网站,怎么解决

1、查看端口是否加入seLinux允许的http端口

semanage port -l | grep http_port_t

2、添加端口

semanage port -a -t http_port_t  -p tcp 8090

防火墙关了没
systemctl stop firewalld.service 关闭运行的防火墙
使用命令systemctl status firewalld.service 查看防火墙状态
disavtive(dead)的字样,说明防火墙已经关闭
systemctl disable firewalld.service,开机禁止防火墙服务器
systemctl enable firewalld.service,开机启动防火墙服务器

资料

无法从浏览器访问Docker应用程序

Docker之WARNING: IPv4 forwarding is disabled. Networking will not work.

https://blog.csdn.net/wo4641771/article/details/106312065/

https://www.cnblogs.com/kwzblog/p/13533907.html

docker logs

posted @ 2021-12-19 12:51  ~沐风  阅读(285)  评论(0编辑  收藏  举报