docker网络Spring事务

This commit is contained in:
法然
2022-10-12 00:15:51 +08:00
parent 8ea2295dc5
commit b91ab7307e
19 changed files with 531 additions and 44 deletions

View File

@@ -1,6 +1,8 @@
# Dockerfile
## 1 DockerFile介绍
## 1 DockerFile
### 构建过程
dockerfile是用来构建docker镜像文件命令参数脚本
@@ -13,7 +15,6 @@ dockerfile是用来构建docker镜像文件命令参数脚本
dockerhub官方的镜像会对应到github上一个仓库中的Dockerfile
## 2 DockerFile构建过程
### 指令
```
@@ -37,7 +38,7 @@ ENV 构建的时候设置环境变量
2. `#`表示注释
3. 每一个指令都会创建提交一个新的镜像层,并提交
### 构建过程
### DockFile的作用
![](image/2022-10-09-22-01-02.png)
dockerfile是面向开发的发布项目、做镜像需要编写dockerfile。
@@ -130,11 +131,37 @@ lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
### 实践CMD和ENTRYPOINT
1. 编写dockerfilefile
```
vim dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]
```
2. 构建镜像
```
docker build -f dockerfile-cmd-test -t cmdtest
```
3. 运行镜像
```
docker run cmdtest
```
4. 测试镜像
```
发现CMD追加命令报错发现ENTRYPOINT命令追加的命令是可以执行的。
docker run cmtest -l
```
### 实践制作tomcat镜像
> 更加复杂,日后补充
## 2 发布自己的镜像
### 发布自己的镜像
### 发布自己的镜像到dockerhub
> DockeHub
@@ -147,22 +174,20 @@ lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
### 发布自己的镜像到阿里云
1. 登录阿里云
2. 申请仓库地址
3. 登录到阿里云仓库
4. docker push
### docker save & docker load
### 本地发布docker save & docker load
将镜像保存压缩包
1. 将镜像保存压缩包
将压缩包加载为镜像
2. 将压缩包加载为镜像
## 总结
![](image/2022-10-09-23-25-09.png)
### 简介
* Docker将应用和环境打包成一个镜像
@@ -212,33 +237,3 @@ create table
![](image/2022-10-07-22-43-49.png)
## 概念原理
### docker volume数据卷操作
```
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
```
* 查看所有的卷的情况
```
➜ data docker volume ls
DRIVER VOLUME NAME
local 635d632e8d79ad10168a6bd6b65ba5b67de68c38c63b619915b6d00db2bd1b4a
local 0704fe09fca1d196b4d4f1cc14141ba05bae986d03ac1209f63ed1cca3d7bd7c
local 924b3cbb61444c73191a11200c727b52f9ccc17dd27024bce61ba63a33577663
# 这里发现的,就是匿名挂载。
```
### 匿名挂载
```
# 匿名挂载
```

View File

@@ -0,0 +1,145 @@
## 1 简介
### 网络原理
* 下载iproute工具linuxip addr查看地址映射
![](image/2022-10-10-23-58-54.png)
* 容器内ip地址会进行映射@符号。docker分配的地址。
```
77: eth0@if78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
```
* 容器、宿主机之间可以通过docker构建的docker虚拟网络进行通信相互ping通
### docker桥接原理
vethc-pair技术充当桥梁。
* 宿主机能够生成成对的地址,一端连接容器的虚拟网卡,另一端连接宿主机的虚拟网卡。
* 宿主机端的虚拟网卡们,能够构成一个局域网络。
* 宿主机的网卡能够和docker中的网卡进行一对一通信。
![](image/2022-10-10-22-33-15.png)
### 容器网络
所有容器在不指定网络的情况下使用docker0的地址做路由。
docker中的所有网络接口都是虚拟的转发效率很高。
容器删除,对应的网桥一对就没了。
![](image/2022-10-11-00-06-31.png)
## 2 补充知识
### --link名称解析
--link可以通过名称访问具体的docker
* 在docker启动的过程中早host中添加了一条路由。
* 所以只有在这个容器中访问指定的名字的时候才能pint通。
### docker network网络查看
```
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
```
* ls能够查看网卡
* inspect能够查看网卡细节的元数据信息。
![](image/2022-10-11-00-11-22.png)
## 3 自定义网络
### 网络原理
* 桥接模式bridge
* none不配置网络
* host和宿主机共享网络
* container:容器内网络联通
```
直接启动默认参数--net bridge
➜ notes git:(master) ✗ docker run -d -P --name tomcat01 --net bridge tomcat
创建容器网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看自己创建的网络
docker network inspect mynet
创建容器加入容器网络
docker run -d -P --name tomcat01 --net mynet tomcat
能够将容器加入到网络中
docker network connnet mynet tomcat01
```
## 4 实战Redis集群
![](image/2022-10-11-23-19-15.png)
```
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
for i in(1..6);
do
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v ~/mydata/redis/node-1/data:/data \
-v ~/mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done
```
## 实战SpringBoot服务
1. 开构建springboot项目
2. 打包应用
3. 编写dockerfilefile
4. 构建镜像
5. 发布运行
```
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","jar","/app.jar"]
```

16
docker/create.sh Normal file
View File

@@ -0,0 +1,16 @@
for port in $(seq 1 6); \
do \
mkdir -p ./mydata/redis/node-${port}/conf
touch ./mydata/redis/node-${port}/conf/redis.conf
cat << EOF >./mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB