.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之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