.NET 6部署Docker

       因近期项目出现短暂的空档期,所以学习了一下.Net 6框架部署到Docker中,踩了不少坑,仅以此记录,希望可以帮到同行。

       因为我也是这块的初学者,参考了一些其他大佬的文档(https://www.cnblogs.com/leonliuo/p/16356494.html),若文章中出现冒犯的烦请联系我,我尽快处理,同时里面有一些命令我暂时也说描述不出来,后期慢慢补充,勿喷。

一、环境和版本 

1、Linux

 2、Docker

3、远程链接使用powershell ssh

 输入密码时,密码不会显示,输入完成直接回车进入远程服务器

4、文件上传工具(winSCP)-xftp

 

 

二、安装依赖包

1、依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 2、设置阿里云镜像源

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 3、安装Docker-CE(Docker Community Edition)属于社区免费版,属于Docker引擎

 sudo yum install docker-ce

三、Docker使用

1、启用、停止 

sudo systemctl enable docker –开机启动

sudo systemctl start docker-启用服务

systemctl stop docker  停止docker服务

2、为 Docker 建立用户组

docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。

1. 建立 Docker 用户组

sudo groupadd docker

2. 添加当前用户到 docker 组

sudo usermod -aG docker $USER

 

 3、构建Docker镜像和容器

镜像:sudo docker build -t mydockertest .(需要注意切换到项目目录下面:cd /文件夹名称)

查看镜像:docker images

 容器:docker run --name webapitest -p 9000(外部端口):9000(容器内部端口) mydockertest

 注意事项:因vs在建立项目时会默认端口号,所以我们需要在Program.cs中处理一点代码,用于指定端口,并且此端口需要和dockerfile端口以及容器内部端口保持一致

         

查看容器: docker ps -a

启动容器:docker start 容器ID

容器若启用正常:可使用curl ip:端口访问地址   

四、Docker常用命令

docker ps --查看目前正在运行的所有容器 -a 显示包括已经停止的容器

docker pull --拉取镜像

docker rmi --删除镜像 后面可以直接根据镜像 名称或者tag 前首字母匹配

docker start  container_id --打开容器 (这里可以是容器id或名称)

#删除单个镜像

docker rmi -f  <镜像id>

docker stop container_id --停止容器 (这里可以是容器id或名称)

docker rm --删除容器(只有停止的容器才可以删除)

docker build --使用 Dockerfile 创建镜像

docker exec --容器中执行命令,例如:docker exec -it  container_id(容器名或id) /bin/bash  (bin/bash要执行的命令或工具)

docker logs --查看 容器日志 ,例如:docker logs -f -t --tail 10 container_id (容器名或id)

四、Linux和iptables相关

因为在使用过程中需要配置Linux相关关键和iptables相关设置,所以涉及到一些命令

1、Linux

查看端口是否被占用

netstat -tunlp | grep 9000

显示所有端口和进程

netstat -anp | grep 8080 

netstat -ntlp | grep 8080

查看防火墙状态

firewall-cmd --state

停止防火墙

systemctl-cmd stop firewalld

2、iptables

保存防火墙规则:iptables-save >/opt/iptables.bak

清除防火墙规则:iptables -F ; iptables -F -t nat ;

恢复防火墙规则:iptables-restore</opt/iptables.bak

指向:iptables -L

启用端口

iptables -AINPUT -ptcp --dport 8080-jACCEPT

清空规则

iptables –F

查看所有规则

iptables –nL

docker固定容器ip设置net为none(此处是由于云服务器端口无法使用,可执行此命令)

iptables -t nat -I PREROUTING -p tcp --dport 端口号 -m state --state NEW -j ACCEPT

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章