.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

 

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