Docker容器基础知识点总结

news2025/1/22 16:15:34

一 、Docker架构

dockers加速镜像:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://z90yxq2m.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Ubuntu下:
sudo service docker start

查看dockers容器有哪些镜像:

docker images
docker images -q  查看所有镜像的id

删除所有镜像  docker rmi `docker images -q`
删除镜像  docker rmi --force 镜像ID

搜索有哪些镜像

docker search imagename

下载镜像到dockers容器

docker pull imagename

从容器中删除某个镜像

docker rmi redis:5.0

查看官网: https://hub.docker.com

1. 容器相关命令
  • 查看容器

  • 创建容器

  • 进入容器

  • 启动容器

  • 停止容器

  • 删除容器

  • 查看容器信息

1.1 创建容器 docker run
docker images
-i 容器一直运行 -t 创建终端  -d 后台运行创建容器
1. 创建容器
方法一
docker run -it --name=lk centos:7 /bin/bash
注意 使用 -it参数创建的容器 创建完成立即进入容器,exit就会立马关闭容器
方法二
docker run -id --name=lk1 centos:7
2. 查看容器
docker ps -a
注意 使用 -id参数创建的容器 创建完成不会立即进入容器,exit也不会关闭容器还是后台运行

-it创建的容器一般称为交互式容器, -id创建的容器一般称其为守护式容器
3. 进入容器
docker exec -it lk /bin/bash
4. 停止容器
docker stop lk
5. 启动容器
docker start lk

6. 删除容器
docker rm lk
7. 删除所有容器
docker rm `docker ps -aq`  但是开启状态的容器是不能被删除的
8. 查看容器的信息
docker inspect lk
2. docker容器的数据卷
2.1 数据卷的概念与作用

思考:

  • docker容器删除后,容器中产生的数据还在吗?
  • docker容器和外部机器可以直接交换文件吗?
  • docker容器之间想要进行数据交互

通过上面三个问题引入了:

容器的数据卷
在这里插入图片描述

  • 数据卷是宿主机中的一个文件和目录

  • 当容器目录和数据卷目录绑定后,双方的修改会立即同步

  • 一个数据卷可以被多个容器同时挂载

  • 一个容器也可以被挂载多个数据卷

数据卷的作用:

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换
2.2配置数据卷
  • 创建启动容器时,使用 -v 参数 设置数据卷

    docker run ... -v 宿主机目录(文件):容器内目录
    
    注意事项:
    1. 目录必须是绝对路径
    2. 如果目录不存在, 会自动创建
    3. 可挂载多个数据卷
    
2.3 配置数据卷容器

多容器进行数据交换
在这里插入图片描述

  1. 多个容器挂载同一个数据卷
  2. 数据卷容器

至少需要三个容器

配置数据卷容器的方法

1. 创建启动c3数据卷容器,使用-v参数设置数据卷
docker run -it --name=c3 -v /volume centos:7 /bin/bash
2. 创建启动c1 ,c2容器,使用--volumes-from参数 设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
3. docker应用部署
3.1 MySQL部署
  • 容器内的网络服务和外部机器不能直接通信.外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信
  • 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的该端口,从而间接访问容器的服务。
  • 这种操作称为:端口映射
    在这里插入图片描述

安装部署

1. 搜索MySQL镜像
docker search mysql
2. 拉去mysql镜像
docker pull mysql:5.6
3. 在宿主机下创建容器,设置端口映射、目录映射
mkdir ~/mysql
cd mysql

docker run -id -p 3307:3306 --name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
3.2 Tomcat 安装部署
1. 搜索tomcat镜像
docker search tomcat
2. 拉去tomcat镜像
docker pull tomcat
3. 在宿主机下创建容器,设置端口映射、目录映射
mkdir ~/tomcat
cd tomcat

docker run -id -p 8090:8080 --name=c_tomcat \
-v $PWD:/usr/local/tomcat/webapp \
tomcat

4. 外部机器访问tomcat
192.168.31.20:8090
3.3 Nginx部署
1. 搜索Nginx镜像
docker search Nginx
2. 拉去Nginx镜像
docker pull Nginx
3. 在宿主机下创建容器,设置端口映射、目录映射
mkdir ~/Nginx
cd Nginx
mkdir conf
cd conf
在~/nginx/conf目录下创建nginx.conf文件,
vim nginx.conf

docker run -id -p 80:80 --name=c_nginx \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

4. 外部机器访问tomcat
192.168.31.20:80

nginx.conf的内容是

user administrator root;  #配置用户或者组,默认为nobody nobody。
worker_processes 2;  #允许生成的进程数,默认为1

pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log /var/log/nginx/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

events {
    #accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    #multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}

http {

    include       /etc/nginx/mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
	
    #access_log off; #取消服务日志  
	
	#自定义格式	
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	
    access_log /var/log/nginx/access.log main;  #combined为日志格式的默认值
	
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
	
	#tcp_nopush     on;
	
    #sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
	
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    #upstream mysvr {   
    #  server 127.0.0.1:7878;
    #  server 192.168.10.121:3333 backup;  #热备
    #}
    
    
	server {
        #keepalive_requests 120; #单连接请求上限次数。
		
        listen       80;   #监听端口
		
        server_name  127.0.0.1;   #监听地址       
		
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
			
			#root path;  #根目录
			#index vv.txt;  #设置默认页
			#proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
			#deny 127.0.0.1;  #拒绝的ip
			#allow 172.18.5.54; #允许的ip  
			root   /usr/share/nginx/html;
            index  index.html index.htm;
        } 
		
		error_page 404 /404.html; #错误页
	
		# 将服务器错误页重定向到静态页 /50x.html
		#
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   /usr/share/nginx/html;
		}
    }
	
	include /etc/nginx/conf.d/*.conf;
}

3.4 Redis部署
1. 搜索Redis镜像
docker search Redis
2. 拉去tomcat镜像
docker pull Redis:5.0
3. 在宿主机下创建容器,设置端口映射、目录映射
mkdir ~/Redis
cd tomcat

docker run -id -p 6379:6379  --name=c_Redis \
Redis:5.0

4. 外部机器访问Redis
192.168.31.20:6379
3.5 gitlab部署

在/usr/local/docker/gitlab目录下创建一个docker-compose.yml文件

version: '3'
services:
    gitlab:
        image: 'twang2218/gitlab-ce-zh:9.4'
        restart: always
        hostname: '172.24.71.184'
        environment:
          TZ: 'Asia/Shanghai'
          GITLAB_OMNIBUS_CONFIG: |
              external_url 'http://172.24.71.184:8080'
              gitlab_rails['time_zone'] = 'Asia/Shanghai'
              gitlab_rails['gitlab_shell_ssh_port'] = 2222
              unicorn['port'] = 8888
              nginx['listen_port'] = 8080
        ports:
          - '8080:8080'
          - '8443:443'
          - '2222:22'
        volumes:
          - /usr/local/docker/gitlab/config:/etc/gitlab
          - /usr/local/docker/gitlab/data:/var/opt/gitlab
          - /usr/local/docker/gitlab/logs:/var/log/gitlab

      
      
version: '3'
networks:
    my_net:
        driver: bridge 
        ipam:
            config:
                - subnet: 172.30.0.1/24
services:
  gitlab:
    image:  'gitlab/gitlab-ce:14.9.5-ce.0'
    container_name: gitlab
    hostname: 'gitlab.example.com'
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://172.24.71.184:8080'
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          gitlab_rails['gitlab_shell_ssh_port'] = 2222
          unicorn['port'] = 8888
          nginx['listen_port'] = 8080
          # 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
          # 电子邮件配置:
          gitlab_rails['smtp_enable'] = true
          gitlab_rails['smtp_address'] = "smtp.qq.com"
          gitlab_rails['smtp_port'] = 465
          gitlab_rails['smtp_user_name'] = "xxxxxxx@qq.com"
          gitlab_rails['smtp_password'] = "授权码,不是密码"
          gitlab_rails['smtp_authentication'] = "login"
          gitlab_rails['smtp_enable_starttls_auto'] = true
          gitlab_rails['smtp_tls'] = true
          # 这里的邮箱账号和上面保持一致
          gitlab_rails['gitlab_email_from'] = '528746460@qq.com'
          user['git_user_email']="528746460@qq.com"
          
          # 配置外部redis
          redis['enable']=false
          gitlab_rails['redis_host']="127.0.0.1"
          gitlab_rails['redis_port']=6379
          gitlab_rails['redis_password']='password'
          gitlab_rails['redis_database']=10
          #配置外部postgresql
          postgresql['enable'] = false
          gitlab_rails['db_adapter'] = 'postgresql'
          gitlab_rails['db_encoding'] = 'utf8'
          gitlab_rails['db_host'] = '127.0.0.1'
          gitlab_rails['db_port'] = '5432'
          gitlab_rails['db_username'] = 'postgres'
          gitlab_rails['db_password'] = 'postgres'
          gitlab_rails['db_database'] = "postgres"
    ports:
      - '8080:8080'
      - '8443:443'
      - '2222:22'
    volumes:
      - /usr/local/docker/gitlab/config:/etc/gitlab
      - /usr/local/docker/gitlab/data:/var/opt/gitlab
      - /usr/local/docker/gitlab/logs:/var/log/gitlab
      #- /home/ecs-user/docker/gitlab/public:/opt/gitlab/embedded/service/gitlab-rails/public
    shm_size: '256m'
    logging: 
      driver: "json-file"
      options: 
        max-size: "2g"
        max-file: "2"
    networks:
        my_net:
            ipv4_address: 172.30.0.6

保存文件后执行下面命令

1. sudo docker-compose up -d
2. sudo docker ps
3. sudo docker logs -f 容器id
4. Dockerfile 制作镜像

如何将自己的项目给到别人,避免水土不服
操作系统组成部分:

  • 进程调度子系统
  • 进程通信子系统
  • 内存管理子系统
  • 设备管理子系统
  • 文件管理子系统
  • 网络通信子系统
  • 作业控制子系统

Linux 文件系统由 bootfs 和 rootfs 两部分组成

  • bootfs :包含 bootloader (引导加载程序)和 kernel (内核).
  • rootfs : root 文件系统,包含的就是典型 Linux 系统中的/ dev ,
    / proc ,/ bin ,/ etc 等标准目录和文件
  • 不同的 linux 发行版, bootfs 基本一样,而 rootfs 不同,如 ubuntu、centos 等
4.1 Docker 镜像原理
  • docker 镜像是由特殊的文件系统叠加而成的
  • 最低端是bootfs,并使用宿主机的bootfs 复用宿主机的bootfs
  • 第二层root文件系统rootfs,称为base image
  • 然后再往上可以叠加其他的镜像文件
  • 统一文件系统( Union File System )技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
  • 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的境像成为基心镜像。
  • 当从一个镜像启动容器时, Docker 会在最顶层加载一个读写文件系统作为容器

在这里插入图片描述

思考:

1.Docker镜像本质是什么? 复用

  • 是一个分层文件系统

2.Docker 中一个 centos 镜像为什么只有200MB,而一个 centos 操作系统的 iso 文件要几个个 G ?

  • Centos 的 iso 镜像文件包含 bootfs 和 rootfs ,而 docker 的 centos 镜像复用操作系统的 bootfs ,只有 rootfs 和其他晚像层

3.Docker中一个 tomcat 境像为什么有500MB,而一个 tomcat 安装包只有70多 MB ?.

  • 由于 docker 中镜像是分层的, tomcat 虽然只有70多 MB ,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的 tomcat 镜像大小500多 MB
4.2 镜像制作
  1. 容器转为镜像

​ docker commit 容器id 镜像名称:版本号

注意对于 有挂载的一些文件 使用docker commit 是不会转为镜像的

  1. 镜像文件转为压缩包传给别人使用
    下面二选一:
    1.docker save 镜像名字:版本号 > 要打包的名字.tar
    docker save 镜像名字:版本号 > 要打包的名字.tgz

    2.docker save -o 要打包名字.tar 镜像名字:版本号

  2. 压缩文件还原成镜像
    下面二选一:
    1.docker load -i 压缩文件名称
    2.docker load < 已打包的镜像名字.tar/tgz

4.3 dockerfile实现镜像步骤

案例一:

  • 定义父镜像: FROM java :8
  • 定义作者信息: MAINTAINER itheima itheima@itcast.cn
  • 将 jar 包添加到容器: ADD springboot.jar app.jar
  • 定义容器启动执行的命令: CMD java -jar app . jar

执行dockerfile文件

在对应目录下将你的项目jar包发给对应的人员

在创建一个dockerfile

通过 dockerfile 构建镜像: docker bulid - f dockerfile 文件路径﹣ t 镜像名称版本

docker bulid -f ./dockerfile_1 -t websapp .

案例二:

案例:实现步骤

  • 定义父镜像: FROM centos :7
  • 定义作者信息: MAINTAINER itheima itheima@itcast.cn
  • 执行安装 vim 命令: RUN yum install - y vim
  • 定义默认的工作目录: WORKDIR / usr
  • 定义容器启动执行的命令: CMD / bin / bash

使用dockerfile文件创建镜像,执行下面命令

docker bulid -f ./dockerfile_1 -t centos_hsh:1.0.2 .

5. docker compose

是一个编排容器分布式部署的工具

  1. 利用dockerfile定义运行环境镜像
  2. 使用docker-compose.xml定义组成应用的各服务
  3. 运行docker-compose up 启动应用
6. 私有仓库

docker pull registry

id - f dockerfile 文件路径﹣ t 镜像名称版本

docker bulid -f ./dockerfile_1 -t websapp .

案例二:

案例:实现步骤

  • 定义父镜像: FROM centos :7
  • 定义作者信息: MAINTAINER itheima itheima@itcast.cn
  • 执行安装 vim 命令: RUN yum install - y vim
  • 定义默认的工作目录: WORKDIR / usr
  • 定义容器启动执行的命令: CMD / bin / bash

使用dockerfile文件创建镜像,执行下面命令

docker bulid -f ./dockerfile_1 -t centos_hsh:1.0.2 .

5. docker compose

是一个编排容器分布式部署的工具

  1. 利用dockerfile定义运行环境镜像
  2. 使用docker-compose.xml定义组成应用的各服务
  3. 运行docker-compose up 启动应用
6. 私有仓库

docker pull registry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1347527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thinkphp6.0升级到8.0

目录 一&#xff1a;升级过程 二&#xff1a;报错处理 最近写的项目需要使用thinkphp8.0&#xff0c;之前的老项目需要从php6.0升级到8.0&#xff0c;特此记录下升级过程。 一&#xff1a;升级过程 查看版本&#xff1a; php think version,我目前的版本是6.1.4 生成thin…

Rust学习笔记001:HELLOW WORLD + Cargo

Rust介绍 Rust&#xff08;中文称为“锈”&#xff09;是一种由Mozilla开发的系统编程语言&#xff0c;它着力于提供安全性、并发性和实用性。Rust的设计目标是消除程序出现的内存安全性问题&#xff0c;如空指针引用、数据竞争等。它通过在编译时进行严格的所有权和借用检查来…

Java实现树结构(为前端实现级联菜单或者是下拉菜单接口)

Java实现树结构&#xff08;为前端实现级联菜单或者是下拉菜单接口&#xff09; 我们常常会遇到这样一个问题&#xff0c;就是前端要实现的样式是一个级联菜单或者是下拉树&#xff0c;如图 这样的数据接口是怎么实现的呢&#xff0c;是什么样子的呢&#xff1f; 我们可以看看 …

【jdk与tomcat配置文件夹共享防火墙设置(入站出站规则)】

目录 一、jdk与tomcat配置 1.1 jdk配置 1.2 tomcat配置 二、文件夹共享 2.1 为什么需要配置文件夹共享功能 2.2 操作步骤 2.2.1 高级共享 2.2.2 普通共享 2.3 区别 三、防火墙设置&#xff08;入站规则&出站规则&#xff09; 3.1 入站规则跟出站规则 3.2 案例…

【低代码平台】10个开源免费Airtable 的替代方案

Airtable是一个易于使用的简单低代码平台&#xff0c;有助于团队协作管理复杂的数据表&#xff0c;并创建定制的工作流程。把它想象成一个类固醇上的云电子表格。 Airtable还简化了数据输入过程&#xff0c;连接和集成第三方服务和应用程序&#xff0c;并提供了许多数据导入/导…

第二部分 离散型随机变量

目录 求分布律里的未知数 例1 例2 根据X的分布律写Y的分布律 例3 根据(X,Y)的分布律写Z的分布律 例4 根据(X,Y)的分布律写边缘分布律 例5 X与Y相互独立时的联合分布律 例6 根据分布律求期望、方差 例7 求分布律里的未知数 例1 已知X的分布律为 X-202P0.40.3k ,试求k 解 0.40…

普中STM32-PZ6806L 使用FlyMcu串口烧录程序

简介 我的串口下载电路坏掉了, 所以研究了下如何通过USB转TTL进行程序的下载, 为后续Bootloader部分做准备;连接 我的板几乎是十年前买的&#xff0c; 所以电路与现有网上的资料有些差异, 所以仅供参考 USB 转 TTL线 与开发板 连接&#xff0c; 如图图中 ①, 需要去掉第一个…

[2024区块链开发入门指引] - 比特币运行原理

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面…

RFC6749-OAuth2.0

前言 最近在项目中需要实现SSO(单点登录)功能,以实现一处注册,即可在任何平台之间登录的功能。我们项目中并没有直接对接第三方认证系统而是通过集成keycloak 完成一系类安全协议的对接工作。如果我们在代码级别自己完成各种安全协议的对接是一项十分大的工程。不仅要走统一的…

提取 PE 文件的各种信息

前段时间项目需要实现对 Windows PE 文件版本信息的提取&#xff0c;如文件说明、文件版本、产品名称、版权、原始文件名等信息。获取这些信息在 Windows 下当然有一系列的 API 函数供调用&#xff0c;简单方便。 我们先看一下PE文件结构&#xff0c;PE文件由DOS首部&#xff0…

【网络面试(4)】协议栈和套接字及连接阶段的三次握手原理

1. 协议栈 一直对操作系统系统的内核协议栈理解的比较模糊&#xff0c;借着这一篇博客做一下简单梳理&#xff0c; 我觉得最直白的理解就是&#xff0c;内核协议栈就是操作系统中的一个网络控制软件&#xff0c;就是一段程序代码&#xff0c;它负责和网卡驱动程序交互&#xff…

【nodejs】前后端身份认证

前后端身份认证 一、web开发模式 服务器渲染&#xff0c;前后端分离。 不同开发模式下的身份认证&#xff1a; 服务端渲染推荐使用Session认证机制前后端分离推荐使用JWT认证机制 二、session认证机制 1.HTTP协议的无状态性 了解HTTP协议的无状态性是进一步学习Session认…

appium入门基础

介绍 appium支持在不同平台的UI自动化&#xff0c;如web,移动端,桌面端等。还支持使用java&#xff0c;python&#xff0c;js等语言编写自动化代码。主要用于自动化测试脚本&#xff0c;省去重复的手动操作。 Appium官网 安装 首先必须环境有Node.js用于安装Appium。 总体来…

接入Cloudflare后Nginx和Django获取用户真实IP的办法

可以用Nginx的real_ip的相关命令来实现这个需求。 01-real_ip命令集详解 real_ip命令的使用分为两个步骤: 01-1-设置从哪些代理IP获取真实IP 第1个步骤&#xff1a;通过set_real_ip_from命令设置从哪些代理IP请求获取真实的IP,比如下面的命令&#xff1a; set_real_ip_from…

2022年全球软件质量效能大会(QECon北京站2022)-核心PPT资料下载

一、峰会简介 当前&#xff0c;新一轮科技革命和产业变革正在重塑全球经济格局&#xff0c;以云计算为代表的新一代信息技术创新活跃&#xff0c;与实体经济深度融合&#xff0c;推动泛在连接、数据驱动、智能引领的数字经济新形式孕育而生。 新兴技术的出现给测试乃至整个软…

探索 Vue 异步组件的世界:解锁高效开发的秘密(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

JavaScript 基础通关

快速熟悉 JavaScript 的基础语法&#xff0c;比较高级的比如事件放在后面的笔记中。 JavaScript 1. JavaScript 介绍 1.1 JavaScript 基本介绍 JavaScript 是一门运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互的效果。实现网页特效、表单验…

SpringBoot学习(一)

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! Spring Boot 是一种基于 Spring 框架的开发模式&#xff0c;旨在简化 Spring 应用程序的创…

学生管理系统(vue + springboot)

学生管理系统&#xff08;vuespringboot&#xff09;资源-CSDN文库 项目介绍 这是一个采用前后端分离开发的项目&#xff0c;前端采用 Vue 开发、后端采用 Spring boot Mybatis 开发。 项目部署 ⭐️如果你有 docker 的话&#xff0c;直接 docker compose up 即可启动&#…

NullByte

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-29 09:23 CST Nmap scan report for 192.168.1.1 Host is up (0.00038s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for …