目标

1、Docker网络配置

2、Docker部署SpringCloud项目

Docker网络配置

Docker网络模式介绍

Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定

1.bridge模式(默认模式)

docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,

同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效

注2:bridge模式无法指定容器IP(但非绝对

Docker run -it --name mytomcat01 -p 8081:8080 镜像ID

Docker run -it --name mytomcat01 -p 8082:8080 镜像ID

 2.host模式

docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口

docker run -it --name mytomcat03 --net=host [镜像id]

注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的

以上几种均未跨主机,也就是说容器均运行在一台宿主机上,但实际生产环境不可能只用一台来跑。

肯定会用到多台,那么多台主机之间的容器如何通信

1.使用路由机制打通网络

2.使用Open vSwitch(OVS)打通网络

3.使用flannel来打通网络

4.使用Quagga来实现自动学习路由

注1:详情见

https://www.cnblogs.com/yy-cxd/p/6553624.html

外部访问docker容器

1.bridge模式

docker run -itd -p 7101:7101 镜像ID

## -p参数可以出现多次,绑定多个端口号

docker run -itd -p 8080:8080 -p 8088:8088 镜像ID

实例:

docker run -it --name mytomcat02 -p 8081:8080 882487b8be1d

http://192.168.238.129:8081/

2.host模式

docker run -itd --net=host 镜像ID

实例:

docker run -itd --net=host 882487b8be1d

http://192.168.238.129:8080/

注1:不需要添加-p参数,因为它使用的就是主机的IP和端口,添加-p参数后,反而会出现以下警告:

WARNING: Published ports are discarded when using host network mode

注2:宿主机的ip路由转发功能一定要打开,否则所创建的容器无法联网!

echo 1 > /proc/sys/net/ipv4/ip_forward

3.相关命令

#停止并删除所有容器

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

4.网桥查看工具bridge-utils

apt install bridge-utils

brctl show

Docker部署SpringCloud项目

先确保工程能够正常访问

http://eureka2001.yuan.com:2001/

http://localhost/student/list

http://localhost:1003/student/list

以这五个部署为例

idea中springcloud项目打jar包

1.在idea运行springcloud项目,不报错,均可正常访问

2.修改主模块的pom

<version>0.0.1-SNAPSHOT</version>

<!-- 1.注意更改为pom而不是jar -->

<!--

<packaging>jar</packaging>

-->

<packaging>pom</packaging>

<!-- 2.主模块不要配置插件 -->

<build></build>

3.在各个子module模块的pom.xml文件中添加插件依赖

 <build>
<plugins>
<!--添加maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--添加自己的启动类路径!-->
<mainClass>com.yuan.microservicestudentproviderhystrix.MicroserviceStudentProviderHystrixApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

4.点击idea的view ——》Tool windows ——》maven projects

先双击clean(去掉之前打的包target文件夹)——》再创建install

5.将项目各子模块target目录下的jar包,复制到指定目录,例如:d:\temp\apps目录下,再通过java命令直接运行

cmd

d:

cd d:\temp\apps

java -jar *.jar --spring.profiles.active=xxx

例如:

 java -jar microservice-eureka-server.jar --spring.profiles.active=eureka2001
java -jar microservice-eureka-server.jar --spring.profiles.active=eureka2002
java -jar microservice-student-provider-hystrix.jar --spring.profiles.active=provider-hystrix-1005
java -jar microservice-student-provider-hystrix.jar --spring.profiles.active=provider-hystrix-1006
java -jar microservice-student-consumer-feign-80.jar

docker部署springcloud

1.宿主机修改hosts文件

vim /etc/hosts

## 在里面添加要映射的域名即可

127.0.0.1  eureka2001.yuan.com

127.0.0.1  eureka2002.yuan.com

2.宿主机创建文件夹apps,rz上传eureka-server-cluster.jar包至apps

## 此目录稍后作为数据卷,在宿主机和容器之间共享数据

mkdir /apps

3.使用jre:8镜像启动容器,并挂载指定目录为数据卷

docker run -d \

-it \

--net=host \

--name student-consumer-feign1 \

--mount type=bind,source=/lys/apps,target=/lys/apps \

747ead4f5a69    镜像ID

注1:jre:8是自定义镜像,已安装jre1.8

4.进入容器,java命令启动微服务

docker exec -it eureka-server-peer1 /bin/sh

java -jar microservice-eureka-server.jar --spring.profiles.active=eureka2001

docker exec -it 0509c0ee8689 /bin/sh

java -jar microservice-student-consumer-feign-80.jar

注1:同理可以启动eureka-server-peer2

注2:docker start $(docker ps -aq)

推荐博客

1、打jar包过程中出错:https://yq.aliyun.com/articles/703936

2、docker启动项目时出现MySQL,jdbc的错:https://blog.csdn.net/qq_45174759/article/details/103630070

测试:

http://192.168.238.129:2001/

http://192.168.238.129:2002/

配置原因,同时启动不了太多的项目,分开测试了没截图。。。

http://192.168.238.129:81/student/list

http://192.168.238.129:1005/info

http://192.168.238.129:81/student/hystrix

谢谢观看!!!

Docker网络配置、Docker部署分布式项目的更多相关文章

  1. docker网络配置

    Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需 ...

  2. bridge br0 docker 网络问题 Docker Container与Docker Host

    Docker学习笔记:Docker 网络配置 - docker ppt - docker中文社区http://www.docker.org.cn/dockerppt/111.html Bridge t ...

  3. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  4. Docker网络解决方案 - Calico部署记录

    简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...

  5. Docker快速上手之部署SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  6. Docker网络解决方案 - Weave部署记录

    前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...

  7. 5、Docker网络配置(单机)

    一.概述 以下内容参考:https://docs.docker.com/network/#network-drivers Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连 ...

  8. docker——网络配置

    一.网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发.同时,Docker随 ...

  9. Docker的基本使用(部署python项目)

    今天开始利用docker来部署项目,当然,首先,需要安装好Docker,这个在我的上篇中写了 一.准备项目 我写的是一个爬取某ppt网站的代码,就一个ppt1.py是爬虫,然后,ppts是存放下载的p ...

随机推荐

  1. 8. Scala面向对象编程(高级部分)

    8.1 静态属性和静态方法 8.1.1 静态属性-提出问题 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决 8.1.2 基本介绍 -Sca ...

  2. golang ---Learn Concurrency

    https://github.com/golang/go/wiki/LearnConcurrency 实例1: package main import ( "fmt" " ...

  3. k8s-架构中各个组件介绍

    参考链接:https://github.com/opsnull/follow-me-install-kubernetes-cluster kubernetes 概述 1.kubernetes 是什么 ...

  4. Oracle的视图和索引

    学习笔记: ##视图     * 概念:视图就是提供一个查询的窗口,所有数据来自于原表.     * 方法:         * 查询语句创建表:             * create table ...

  5. c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形

    今天翻资料的时候,无意间发现了一个文件,是刚接触编程的时候用c++写的一段程序,我称之为"图形打印机",想着把所有图形都打印出来,后来发现其实每种图形的代码都是一个思路,就不想做重 ...

  6. 第一章 Maven 安装配置

    Maven基于(POM)项目对象模型,通过一小段描述信息来管理项目的构建.文档.和报告的项目管理软件,类似于php 的管理构建工具composer. 有关详细的Maven学习,可以参考学习https: ...

  7. Django的安全攻击

    目录 Django的安全攻击 XSS XSS(跨站脚本攻击) 危害 原理 防护 csrf(Cross Site Request Forgery) csrf(跨站域请求伪造) 过程 Django 提供的 ...

  8. expor和import的用法

    1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出 // profile.js export var firstName = 'M ...

  9. APS系统如何让企业实现“多赢”?看高博通信是怎么做的

    高博通信(上海)有限公司凭籍在超精密产业中的技术积累, 强大的资金优势以及与一流大学的联合,使得其正成为国内超精密电子制造行业的领导者. 雄厚的技术实力和专业的团队赢得了波音,空客公司等国际航空器制造 ...

  10. Cheat Engine 字节数组类型

    BIG5 编码:http://www.qqxiuzi.cn/zh/hanzi-big5-bianma.php 打开游戏 准备修改名字 查找BIG5码 藤 吉 开始扫描 使用字节数组类型扫描 新BIG5 ...