vm的三种网咯模式
1. Docker网络模式
- Docker在创建容器时有四种网络模式:bridge/host/container,bridge为默认不需要用–net去指定,
其他三种模式需要在创建容器时使用–net去指定
2.bridge模式(默认模式)
docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的
注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP
3.host模式
docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口
docker run -itd --net=host 镜像id
注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一 致,-p 与-icc 参数是无效的
构建docker容器指定网络模式
1.bridge模式
$ docker run -itd -p 7101:7101 镜像ID
当我访问宿主机的7101端口的时候,它能帮我映射到容器的7101端口
-p参数可以出现多次,绑定多个端口号
$ docker run -itd -p 8080:8080 -p 8088:8088 镜像ID
2.host模式
$ docker run -itd --net=host 镜像ID
3.相关命令
停止并删除所有容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
4.网桥查看工具bridge-utils
$ rpm -qa|grep bridge-utils 可以看到网桥连接工具的进程
$ yum install bridge-utils 安装网桥连接工具
$ brctl show 查看网桥连接工具的信息
-
idea中springcloud项目打jar包
1.在idea运行springcloud项目,不报错,均可正常访问2.修改主模块的pom
0.0.1-SNAPSHOTpom
在各个子module模块的pom.xml文件中添加插件
注:在各个子模块中必须添加
<packaging>jar</packaging>
<build>
<plugins>
<!--添加maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--添加自己的启动类路径!-->
<mainClass>com.imooc.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
6.点击idea的view ——》Tool windows ——》maven projects
先双击clean(去掉之前打的包target文件夹)——》再创建install
7.将项目各子模块target目录下的jar包,复制到指定目录,例如:d:\temp\apps目录下,再通过java命令直接运行
cmd
d:
cd d:\temp\apps
java -jar *.jar --spring.profiles.active=xxx
CMD
例如:
java -jar *.jar 就是jar包的启动命令
java -jar eureka-server-cluster.jar --spring.profiles.active=peer1
java -jar eureka-server-cluster.jar --spring.profiles.active=peer2
java -jar eureka-provider.jar
java -jar eureka-consumer.jar
docker部署springcloud
1.宿主机修改hosts文件
vim /etc/hosts
## 在里面添加要映射的域名即可
127.0.0.1 peer1
127.0.0.1 peer2
宿主机创建文件夹apps,上传eureka-server-cluster.jar包至apps
## 此目录稍后作为数据卷,在宿主机和容器之间共享数据
mkdir /apps
使用jre:8镜像启动容器,并挂载指定目录为数据卷
docker run -d
-it
–net=host
–name eureka-server-peer1
–mount type=bind,source=/apps,target=/apps
镜像ID
宿主机的/apps目录下有一个jar,那么这个jar包同样在容器的/webapps目录下:数据共享
注1:jre:8是自定义镜像,已安装jre1.8
进入容器,java命令启动微服务
docker exec -it eureka-server-peer1 /bin/sh
java -jar eureka-server-cluster.jar --spring.profiles.active=peer1
注1:同理可以启动eureka-server-peer2
注2:docker start $(docker ps -aq)
千万记得开防火墙端口:firewall-cmd --zone=public --add-port=7101/tcp --permanent
firewall-cmd --reload