C++GO语言微服务之数据卷实践
目录
01 06-数据卷容器概念
02 07-数据卷容器挂载的步骤
03 08-数据卷容器挂载操作
04 09-数据卷容器数据备份
05 10-数据卷容器数据备份演示
06 11-数据卷容器数据还原
01 12-端口映射和随机分配端口
02 13-nginx介绍
03 14-手动指定端口映射
04 15-网络管理命令ls inspect使用
01 06-数据卷容器概念
```shell
# 挂载数据卷容器的参数
--volumes-from 数据卷容器的名字/数据卷容器的ID
# 1. 创建数据卷容器
docker run -itd --name containsVolume -v /itcast_bk ubuntu bash
# 2. 启动测试容器1, 挂载到数据卷容器
docker run -itd --name test1 --volumes-from containsVolume ubunut bash
# 3. 启动测试容器2, 挂载到数据卷容器
docker run -itd --name test2 --volumes-from containsVolume ubunut bash
# 4. 测试数据是否共享
# 4.1 进入到test1/test2容器中
docker exec -it test1 bash
docker exec -it test2 bash
02 07-数据卷容器挂载的步骤
03 08-数据卷容器挂载操作
### 1.3 数据卷容器数据备份

```shell
# 挂载数据卷容器的参数
--volumes-from 数据卷容器的名字/数据卷容器的ID
# 1. 创建数据卷容器
docker run -itd --name containsVolume -v /itcast_bk ubuntu bash
# 2. 启动测试容器1, 挂载到数据卷容器
docker run -itd --name test1 --volumes-from containsVolume ubunut bash
# 3. 启动测试容器2, 挂载到数据卷容器
docker run -itd --name test2 --volumes-from containsVolume ubunut bash
# 4. 测试数据是否共享
# 4.1 进入到test1/test2容器中
docker exec -it test1 bash
docker exec -it test2 bash
# 备份数据 -> 数据卷容器中的数据
04 09-数据卷容器数据备份
# 1. 创建一个临时新容器, 挂载到数据卷容器上, 和宿主机目录形成映射关系
docker run -itd --name backup --volumes-from containsVolume -v /home/go/backup:/xxx ubunut bash
# 2. 进入到backup容器中
docker exec -it backup bash
# 3. 将itcast_bk中的内容拷贝到 xxx目录中即可
# 4. 删除backup容器即可
# 合并上述4个步骤
docker run -itd --rm --name backup --volumes-from containsVolume -v /home/go/backup:/xxx ubunut tar zcpf /xxx/backup.tar.gz /itcast_bk
```
05 10-数据卷容器数据备份演示
### 1.4 备份数据还原到数据卷容器
```shell
# 还原数据 -> 数据卷容器中的数据
# 1. 创建一个临时新容器, 挂载到数据卷容器上, 和宿主机目录形成映射关系
docker run -itd --name backup --volumes-from containsVolume -v /home/go/backup:/xxx ubunut bash
# 2. 进入到backup容器中
docker exec -it backup bash
# 3. 将/xxx中的内容拷贝到 itcast_bk目录中即可
# 4. 删除backup容器即可
# 合并上述4个步骤
docker run -itd --rm --name backup --volumes-from containsVolume -v /home/go/backup:/xxx ubunut tar zxpf /xxx/backup.tar.gz -C /
```
06 11-数据卷容器数据还原
## 2. docker网络管理
### 2.1 docker端口映射
- 随机端口映射
```shell
# 创建启动容器的时候指定端口映射
# 在宿主机随便找一个没有占用的空闲端口 he 容器的 80端口进行映射
docker run -itd -P --name mynginx nginx
```
- 指定端口映射/指定多端口映射 -> 推荐
```shell
# 使用的参数
# 指定的宿主机端口必须是空闲端口
docker run -itd -p xxx --name mynginx nginx
-p: 宿主机的IP:宿主机的端口:容器的端口
宿主机的端口:容器的端口
# 指定多个端口映射
docker run -itd -p 80:80 -p 81:81 --name mynginx nginx
```
01 12-端口映射和随机分配端口
### 2.2 网络管理
- 网络管理相关命令
```shell
# 如果多个docker容器想进行通信, 那么这些容器必须要在同一个网络中
$ docker network --help
Usage: docker network COMMAND
Manage networks
Commands:
connect 将指定的容器加入到指定的网络中
create 创建一个网络
disconnect 将容器从一个网络中删除
inspect 查看网络的详细信息
ls 查看当前网络
prune 删除所有的没有被使用的网络 -> 慎用
rm 删除一个或多个指定的网络
02 13-nginx介绍
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2d7f80ec7ad0 bridge bridge local
1e5d47e7c511 host host local
713535eaeb1a none null local
# bridge网络是默认使用的网络
03 14-手动指定端口映射
- docker的常用的网络模式
### 2.3 bridge 网络模式
- 创建bridge网络
```shell
docker network create -d 网络驱动的名字 要创建的网络的名字
网络驱动的名字: 默认是bridge
```
- 自定义网段与网关
```shell
--subnet: 指定子网络的网段
--gateway: 指定网关
docker network create -d 网络驱动的名字 --subnet 180.18.10.0/24 --getway 180.18.10.1 要创建的网络的名字
$ docker network create -d bridge --subnet 180.18.10.0/24 --gateway 180.18.10.1 bridge_test
```
04 15-网络管理命令ls inspect使用
- 在自定义网络中启动容器
```shell
$ docker run -it --name test1 ubuntu bash
--network: 指定要加入的网络
$ docker run -it --name test1 --network bridge_test ubuntu bash
```
- 容器断开网络
```shell
docker network disconnect [OPTIONS] NETWORK CONTAINER
- OPTIONS:
-f: 强制执行
```