当前位置: 首页 > news >正文

【docker】docker数据卷与网络部署服务

Docker 网络模式

  1. 选择网络模式
    • Host Mode (主机模式)
      • 特点: 容器与宿主机共享网络命名空间
      • 操作: docker run --net=host ...
    • Container Mode (容器模式)
      • 特点: 容器与指定容器共享网络命名空间
      • 操作: docker run --net=container:<container-id-or-name> ...
    • None Mode (无网络模式)
      • 特点: 容器拥有独立的网络命名空间但没有任何网络设置
      • 操作: docker run --net=none ...
    • Bridge Mode (桥接模式)
      • 特点: 容器拥有独立的网络命名空间,具有独立的 IP 地址、端口和路由,通过 veth pair 连接到 docker0 网桥
      • 操作: docker run --net=bridge ...
  2. 执行网络操作
    • 查看现有网络
      • 操作: docker network ls
      • 操作: docker network inspect <network-id-or-name>
    • 连接容器到网络
      • 操作: docker network connect <network> <container>
    • 断开容器与网络的连接
      • 操作: docker network disconnect <network> <container>
    • 删除网络
      • 操作: docker network rm <network>

Docker 网络模式的特性

  • Host Mode (主机模式)
    • 容器与宿主机共享网络命名空间。
    • 容器可以直接访问宿主机的网络设备、IP 地址及端口。
    • 不支持端口映射。
  • Container Mode (容器模式)
    • 容器与另一个容器共享网络命名空间。
    • 共享的容器拥有相同的网络设备、IP 地址及端口。
    • 不支持端口映射。
  • None Mode (无网络模式)
    • 容器拥有独立的网络命名空间。
    • 容器没有任何网络配置。
    • 可能用于不需要网络功能的服务。
  • Bridge Mode (桥接模式)
    • 容器拥有独立的网络命名空间。
    • 每个容器都有独立的 IP 地址、端口和路由。
    • 使用 veth pair 连接到 docker0 网桥。
    • 支持端口映射。
    • 可以通过 IP 地址或容器名称进行通信。

获取容器的进程号

  • 命令: docker inspect -f '{{.State.Pid}}' <container-id-or-name>

1、部署portainer,添加阿里云镜像仓库,通过portainer下载镜像构建容器

docker pull php
docker tag 3546b3772897 registry.cn-hangzhou.aliyuncs.com/shiina_space/shiina:php
docker push registry.cn-hangzhou.aliyuncs.com/shiina_space/shiina:php
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

浏览器访问192.168.99.130:8088,添加一个Registries
在这里插入图片描述
搜索镜像php,pull 这个镜像
在这里插入图片描述
创建容器
在这里插入图片描述
在这里插入图片描述

2、部署tomcat,将宿主机下的/opt/html目录挂载到tomcat容器内的webapps目录,在tomcat中发布电影网站

docker run -d -p 8085:8080 --name tomcat88 -v /opt/html:/usr/local/tomcat/webapps tomcat:8.5

在这里插入图片描述

apt-get install mysql-server
mysql_secure_installation

3、部署nginx,nginx读取的nginx.conf文件来自宿主机

docker run -d -p 86:80 -v /opt/nginxconfd:/etc/nginx/conf.d --name n8 nginx  

在这里插入图片描述

4、创建一个独立的桥接网络,网段(20.0.0.0/24),用于部署前后端分离项目,需要nginx容器,mysql容器,java容器(基于centos容器以rpm方式部署jdk8.0)

创建docker网络

docker network create --driver bridge --subnet=20.0.0.0/24 myapp-net

部署MySQL

docker run --name mysql --network myapp-net -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker cp ./carbon.sql mysql:/opt                                                              
#Successfully copied 4.1kB to mysql:/opt
docker exec -it mysql /bin/bash                                                                cd /optmysql -uroot -p <carbon.sql 
#Enter password: 

在这里插入图片描述

部署后端Java spring

修改jdbc为20.0.0.2:3306后。

docker run --name java-app --network myapp-net -d -v $(pwd):/opt -p 8090:8090 \centos \bash -c "rpm -ivh /opt/jdk-8u371-linux-x64.rpm && java -jar /opt/carbon.jar"

在这里插入图片描述

部署前端nginx

nginx.conf:

user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;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;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;upstream backend {server java-app:8090;}server {listen       80;server_name  localhost;# Serve static files from /bm directorylocation / {root /usr/share/nginx/html/bm;index index.html index.htm;}# Proxy requests to the Java applicationlocation /bm {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
}
docker run --name nginx --network myapp-net -p 80:80  -v /opt/carbon/bm:/usr/share/nginx/html -d nginx 
docker cp /opt/carbon/nginx.conf nginx:/etc/nginx   
docker restart nginx

访问192.168.99.130
在这里插入图片描述

相关文章:

【docker】docker数据卷与网络部署服务

Docker 网络模式 选择网络模式 Host Mode (主机模式) 特点: 容器与宿主机共享网络命名空间操作: docker run --nethost ... Container Mode (容器模式) 特点: 容器与指定容器共享网络命名空间操作: docker run --netcontainer:<container-id-or-name> ... None Mode (无…...

Spring MVC框架学习笔记

学习视频:10001 Spring MVC概述_哔哩哔哩_bilibili~11005 请求映射方式_哔哩哔哩_bilibili 目录 1.概述 Java EE三层架构 Spring MVC在三层架构中的位置 ​编辑 Spring MVC在表现层的作用 Spring MVC的特点 2.Spring MVC入门程序 代码实现 Spring MVC工作原理 Spring …...

LeetCode 100道题目和答案(面试必备)(一)

1.两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按…...

OpenGL投影矩阵

OpenGL Projection Matrix OpenGL投影矩阵...

Linux中的`make`与`Makefile`:项目自动化构建工具

Linux中的make与Makefile&#xff1a;项目自动化构建工具 在Linux及类Unix系统中&#xff0c;make是一种广泛使用的自动化构建工具&#xff0c;它通过读取和执行Makefile&#xff08;或makefile&#xff0c;文件名不区分大小写&#xff09;中的指令来自动化编译和构建程序。Ma…...

GitHub开源项目精选:轻量级预约/预订日历组件,用React和TypeScript构建

在日常开发中&#xff0c;我们经常需要在项目中添加预约或预订功能。今天给大家推荐一个超级轻量级的预约/预订日历组件&#xff0c;它是用React和TypeScript构建的&#xff0c;非常适合那些需要简单易用的日历解决方案的开发者。 安装方法&#xff1a; 你可以选择使用npm或者y…...

闲钱放在哪里?收益稳定且又高!

家庭理财&#xff0c;最大的问题就是&#xff0c;手里这点闲钱&#xff0c;说多不多&#xff0c;但打理起来&#xff0c;还真的很”挠头“。 放银行&#xff0c;存款利率接二连三下调&#xff0c;利息又又又要变少了&#xff01; 投资出去&#xff0c;看着到处的雷声隆隆&…...

【Linux】简易线程池项目

线程池是一个可以巩固一些线程相关接口 && 加强理解的一个小项目。 注意&#xff1a;这里的线程池使用的线程并不是Linux原生接口&#xff0c;而是经过封装的&#xff0c;具体请看线程封装&#xff0c;为什么不使用原生接口&#xff1f; 因为原生接口一旦进行pthread…...

基于vue框架的NBA球星管理系统1878g(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,球员,球员数据,榜单类型,联盟榜单,重要比赛回放,精彩时刻视频,视频专栏,本赛季赛程,十佳球,投票信息,投票结果 开题报告内容 基于Vue框架的NBA球星管理系统 开题报告 一、选题背景 随着互联网的普及和体育产业的蓬勃发展&#x…...

【docker】Dockerfile练习

1、overlay文件系统原理测试 cd /mnt mkdir A B C worker merged echo "From A">./A/a.txt echo "From A">./A/b.txt echo "From A">./A/c.txt echo "From B">./B/a.txt echo "From B">./B/d.txt echo &quo…...

数据可视化的魔法:Python Matplotlib库的奇妙之旅

标题&#xff1a;数据可视化的魔法&#xff1a;Python Matplotlib库的奇妙之旅 在数据科学和分析领域&#xff0c;数据可视化是一种将复杂数据转换为图形表示的强有力工具&#xff0c;它可以帮助我们更直观地理解数据。Python中的Matplotlib库是进行数据可视化的瑞士军刀&…...

Python数据科学的秘密武器:Pandas库的深度解析

标题&#xff1a;Python数据科学的秘密武器&#xff1a;Pandas库的深度解析 Python作为数据科学领域的宠儿&#xff0c;其强大的数据处理能力离不开Pandas库的加持。Pandas是一个开源的数据分析和操作库&#xff0c;它提供了快速、灵活和表达力强的数据结构&#xff0c;旨在使…...

云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本

一、python环境搭建 确保拥有阿里云镜像 查看python环境 [rootpython ~]# yum list installed | grep python 查看epel是否安装 [rootpython ~]# yum list installed | grep epel 安装epel [rootpython ~]# yum -y install epel-release.noarch 查看是否安装python3 [rootpyt…...

深入了解网络性能监控(NPM):优化网络性能的关键

目录 网络性能监控&#xff08;NPM&#xff09;是什么&#xff1f; 关键网络性能指标 案例分享&#xff1a;如何利用NPM优化网络性能 实用技巧&#xff1a;如何高效运维你的网络 结论 随着企业依赖于互联网和内部网络进行业务运营&#xff0c;网络的稳定性和性能显得尤为重…...

Vue引入使用iconfont字体图标

由于element-ui或element-plus提供的图标有时候并不能满足日常需求,所以这篇介绍一下前端引入阿里巴巴矢量图标库使用,不止是vue使用,不限于vue2、vue3,html或是其他框架也是同样的道理,只要引入都是同样可以使用的。 1. 首先进入阿里巴巴矢量图标库官网 官网:https://…...

Doc2Vec

Doc2Vec 是一种扩展自 Word2Vec 的算法&#xff0c;它不仅可以生成词向量&#xff0c;还可以生成句子或文档的向量。下面是一个使用 Doc2Vec 比较两个句子的具体过程&#xff1a; 步骤 1: 训练 Doc2Vec 模型 首先&#xff0c;你需要有一个训练好的 Doc2Vec 模型。训练过程大致…...

MES生产过程透明管理,实施掌握生产每个环节

MES&#xff08;制造执行系统&#xff09;生产过程透明管理&#xff0c;旨在通过集成多种技术手段和管理模块&#xff0c;实现对生产过程的实时监控和精准掌握&#xff0c;确保每个生产环节都能被清晰地记录和追踪。以下是对MES生产过程透明管理的详细阐述&#xff1a; 一、MES…...

Java解析压缩包,并根据指定文件夹上传文件

方法 public Multimap<String, String> getCodeBucketMultimap(HttpServletRequest request)throws IOException {MultipartHttpServletRequest multiRequest (MultipartHttpServletRequest) request;// 基于servlet获取文件流List<MultipartFile> multipartFile…...

【HTML】纯前台字符验证码

效果图&#xff1a; 大致思路&#xff1a; 1.在<canvas>画布里写出几个字符&#xff1b; 2.给字符一个随机的角度和颜色&#xff1b; 3.给字符上画出一些干扰线和干扰点。 <canvas width"100" height"30" id"canvasRef" click"…...

如何在 Vue.js 项目中动态设置页面标题

目录 方法 1:使用 Vue Router 的元信息(meta) 步骤 1: 配置路由元信息 步骤 2: 使用路由守卫设置标题 方法 2:在组件内设置标题 在组件挂载时设置标题 使用响应式数据动态更新标题 在开发 Vue.js 应用时,设置动态页面标题是常见需求,尤其当应用包含多个页面时,为每…...

Eval绕过限制参数限制

PHP Eval函数参数限制在16个字符 PHP代码 <?php$param $_REQUEST[param]; if (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false){eval($param);}?># 部署环境属于ubuntu系统 通过GET传参绕过 由于是…...

计算机网络408考研 2021

2021 计算机网络408考研2021年真题解析_哔哩哔哩_bilibili 1 1 11 1 1 11...

element table表格树形数据展示

element table表格树形数据展示 1、效果 2、代码 <el-table ref"pointMultipleTable" border class"table-box" :data"[damActiveObj]"row-key"id" :tree-props"{ children: children }" :expand-row-keys"expand…...

Ubuntu 安装 Snipaste

一、下载 Snipaste 下载Snipastehttps://zh.snipaste.com/ 二、在/opt 创建 Snipaste 目录&#xff0c;创建 bin 和 icon 子目录&#xff0c;将 Snipaste.AppImage 移动到 bin 目录 三、创建快捷键图标 1. 创建桌面图标&#xff0c;右键→允许运行 yammiemy-pc >/home/y…...

NET8环境WebAPI实现文件的压缩及下载

目录 1、文件下载的原理2、具体实现2.1 提前准备2.2 服务器端的实现2.3 请求端的实现 3、代码下载4、更多特性4.1 单独压缩文件4.2 解析4.2.1 整体解析4.2.2 单个文件解析 4.3 其他4.3.1 设置压缩级别4.3.2 密码保护4.3.3 进度反馈 5、参考资料 1、文件下载的原理 在实际应用环…...

Ubuntu 18 使用NVIDIA上的HDMI输出声音

前言 在未做修改之前&#xff0c;Settings -> Sound -> Output 里面只有 Digital Output(S/PDIF) - Built-in Audio 不显示HDMI的输出设备检查当前存在的音频设备 sudo lspci -v | grep -A7 -i "audio"输出&#xff1a; 从输出可以看出来是有两个设备的 00:1…...

C#模拟量线性变换小程序

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。本文详细介绍了如何使用C#构建一个项目,通过S7net库连接并连续读取S7-1200 PLC的数据,包括创建窗体应用、配置存储位置、安装S7net库…...

跟《经济学人》学英文:2024年08月10日这期 How AI models are getting smarter

How AI models are getting smarter Deep neural networks are learning diffusion and other tricks 原文&#xff1a; Type in a question to ChatGPT and an answer will materialise. Put a prompt into DALL-E 3 and an image will emerge. Click on TikTok’s “for y…...

Spring Web MVC入门(上)

1. Spring Web MVC Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为“spring MVC”&#xff1b; 什么是Servlet呢? Servlet…...

【c++】公差判断函数 isInTolerance

定义&#xff1a; isInTolerance 函数用来判断一个特定数值&#xff08;变量&#xff09;是否在以某个中心值为基准 &#xff0c;给定半径的范围内。这个函数包含了一个可选的参数 includeEndpoints&#xff08;默认为 true&#xff09;&#xff0c; 用于决定范围是否包含其端点…...