.netcore项目部署在ubuntu22.04虚拟机的docker中的过程记录

前言:

所有文章免费阅读,请支持免费精神,为我评论和点赞。

前提:

本文的前提是你做好了dockerfile文件,允许一键生成镜像了。

一、生成docker镜像

在你的后端项目根目录下,执行命令生成镜像。

docker save -o zsmadmin.tar zsmadmin

dir zsmadmin.tar

二、在Ubuntu虚拟机中部署步骤:

1. 首先传输镜像文件到Ubuntu虚拟机

需要将 D:\yangyong\code\ZsmAdmin\ZsmAdmin_v1\ZsmAdmin\zsmadmin.tar 文件传输到Ubuntu虚拟机。可以使用以下方法之一:

方法1:使用SCP命令(在Windows PowerShell中执行)

scp D:\yangyong\code\ZsmAdmin\ZsmAdmin_v1\ZsmAdmin\zsmadmin.tar

username@ubuntu_ip:/home/username/

(将 username 和 ubuntu_ip 替换为您的实际用户名和IP地址)

请注意上面这个提示,我一开始纠结于用root用户,上传到/home/root目录。 死都不成功,

后面查证发现,压根没有/home/root这个目录。 把username部分替换成yy就上传成功了,命令如下:

scp D:\yangyong\code\ZsmAdmin\ZsmAdmin_v1\ZsmAdmin\zsmadmin.tar yy @192.168.174.133:/home/yy/

方法2:使用FTP工具 使用FileZilla或WinSCP等工具将 zsmadmin.tar 上传到Ubuntu虚拟机

这个方法前提是你的ubuntu开启了FTP服务,我没有测试这个。

2. 在Ubuntu虚拟机的SSH连接中执行以下命令:

bash 复制代码
# 检查Docker是否正常运行,如果不正常,就想办法调试正常。

sudo systemctl status docker

# 加载Docker镜像,先要用cd命令进入镜像文件所在目录 如 /home/yy

sudo docker load -i  zsmadmin.tar

# 验证镜像是否加载成功

sudo docker images

# 停止并删除已存在的容器(如果有)

sudo docker stop zsmadmin-container

sudo docker rm zsmadmin-container

# 启动新容器,映射5005端口

sudo docker run -d -p 5005:5005 --name zsmadmin-container zsmadmin

# 检查容器状态

sudo docker ps

# 查看容器日志

sudo docker logs zsmadmin-container

我的命令执行截图如下:

3. 验证部署是否成功

测试端口是否监听

sudo netstat -tlnp | grep 5005

测试API是否可访问

curl http://localhost:5005

或者直接到宿主机上浏览器访问,用你的虚拟机IP加5005端口验证。

4. 如果需要从外部访问

确保Ubuntu防火墙允许5005端口:

如果使用UFW防火墙

sudo ufw allow 5005/tcp

sudo ufw reload

或者如果使用firewalld

sudo firewall-cmd --permanent --add-port=5005/tcp

sudo firewall-cmd --reload

5. 常用管理命令

查看运行中的容器

sudo docker ps

查看所有容器(包括停止的)

sudo docker ps -a

查看容器日志

sudo docker logs zsmadmin-container

实时查看日志

sudo docker logs -f zsmadmin-container

停止容器

sudo docker stop zsmadmin-container

启动容器

sudo docker start zsmadmin-container

重启容器

sudo docker restart zsmadmin-container

删除容器

sudo docker rm zsmadmin-container

删除镜像

sudo docker rmi zsmadmin

相关推荐
sbjdhjd3 小时前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
Pocker_Spades_A4 小时前
Penpot自托管设计协作:Docker部署、MCP接入与Codex生成UI实操记录
ui·docker·容器
Lvan的前端笔记13 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
sbjdhjd19 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人19 小时前
1、什么是K8s
云原生·容器·kubernetes
上位机妹子20 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
帷幕落秋20 小时前
Docker的两种安装
运维·docker·容器
工业一体机老司机20 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
fengkai454521 小时前
十二、Redis -2
运维·数据库·redis·容器
DolitD1 天前
3D应用多实例并发中的GPU隔离技术路径分析
容器·gru·接口隔离原则