1 创建一个springboot项目
提供一个controller接口:
@RestController
public class IndexController {
@GetMapping(value = "/index")
public String index(){
return "index:" + System.currentTimeMillis();
}
}
application.properties配置文件:
# 配置端口
server.port=9090
server.servlet.context-path=/
spring.application.name=spring-boot-demo
spring.output.ansi.enabled=always
编写Dockerfile文件:
FROM openjdk:20-ea-17-jdk
MAINTAINER tdt<tudoutiao@163.com>
RUN mkdir -p /wwwroot/service/web
WORKDIR /wwwroot/service/web
EXPOSE 9090
ADD ./target/spring-boot-web-1.0-SNAPSHOT.jar ./app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
将该项目打包成jar包:
使用命令构建docker镜像: docker build -t springboot/web:1.0 .
使用命令运行容器: docker run -d -p 9090:9090 springboot/web:1.0
调用接口进行测试:
2 docker网络
网络模式 | 描述 |
---|---|
bridge模式 | 使用--network bridge 指定,默认为该模式;为每个容器分配设置ip,并将容器连接到一个docker0虚拟网桥; 示例: docker run -d -p 80:80 nginx |
host模式 | 使用--network host 指定;容器将不会虚拟出自己的网卡、配置自己的ip等,而是使用宿主机的ip和端口; 示例: docker run -d --network host nginx , 不再需要使用-p进行端口映射; |
none模式 | 使用--network none 指定;容器有独立的Network namespace,但没有对齐进行任何网络设置; |
container模式 | 使用--network container:NAME或者容器ID 指定;新创建的容器不会创建自己的网卡和配置自己的ip,而是和一个指定的容器共享ip、端口范围等; 示例: docker run -it --name container-a 镜像名 /bin/bash , docker run -it --network container:container-a --name container-b 镜像名 /bin/bash |