多个容器共用同一个存储卷

本文主要介绍多个容器之间如何共用同一个存储卷案例,以此实现类似nfs共享文件存储的功能

1、共享同一个存储卷
# 1、创建c1容器并指定存储卷
[root@docker101 ~]# docker volume ls
DRIVER    VOLUME NAME
[root@docker101 ~]# docker container run -d -v /usr/share/nginx/html --name c1 -p 81:80 nginx:1.26.1-alpine 
ef1853a0edb7b769f62a45f8ce2dd33a3bd312ed38e345d45084a14e34b3674d
[root@docker101 ~]# docker volume ls
DRIVER    VOLUME NAME
local     387a178cbc85522a00521f80cf6d745764321e1faf25b91a9e555048f578654c
[root@docker101 ~]# docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c1 
172.17.0.2

# 2、创建c2容器和c1容器共用同一个存储卷
[root@docker101 ~]# docker volume ls
DRIVER    VOLUME NAME
local     387a178cbc85522a00521f80cf6d745764321e1faf25b91a9e555048f578654c  
[root@docker101 ~]# docker container run -d --volumes-from c1 --name c2 -p 82:80 nginx:1.26.1-alpine 
773db0c3b64e99476dd6a859cda09d9d639fbf6ad55cf0a415208ab8286f6f8d
[root@docker101 ~]# docker volume ls
DRIVER    VOLUME NAME
local     387a178cbc85522a00521f80cf6d745764321e1faf25b91a9e555048f578654c
[root@docker101 ~]# docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c2
172.17.0.3

# 3、修改c2的网站页面
[root@docker101 ~]# docker exec -it c2 sh
/ # echo www.baidu.com > /usr/share/nginx/html/index.html 
/ # exit
[root@docker101 ~]# curl 172.17.0.2
www.baidu.com
[root@docker101 ~]# curl 172.17.0.3
www.baidu.com
2、将宿主机的指定目录挂载到容器中
# 1、创建测试数据
[root@docker101 ~]# mkdir -pv /Dusk/code
[root@docker101 ~]#
[root@docker101 ~]# cat /Dusk/code/index.html
<h1 style='color: red;'>www.baidu.com</h1>

#2、挂载容器
[root@docker101 ~]# docker container run -d -p 83:80 -v /Dusk/code/:/usr/share/nginx/html nginx:1.26.1-alpine 
02fc0554178f84493b4904e0458c79b1407734cf7c37bcbb70e1195e565ad1b4
[root@docker101 ~]# docker ps -l
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                               NAMES
02fc0554178f   nginx:1.26.1-alpine   "/docker-entrypoint.…"   4 seconds ago   Up 4 seconds   0.0.0.0:83->80/tcp, :::83->80/tcp   tender_mcclintock
[root@docker101 ~]# curl http://10.0.0.101:83/
<h1 style='color: red;'>www.baidu.com</h1>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来给您写一份关于 C 语言的详细教程。 C 语言是一种高效、通用、面向过程的编程语言,它被广泛应用于系统软件、网络通信、嵌入式系统等领域。在本教程中,我们将从基础语法、数据类型、数组、函数、指针等方面,逐步介绍 C 语言的知识点。 一、基础语法 1.注释 C 语言中,注释是用来解释代码的一种方式。注释分为单行注释和多行注释。 单行注释:以"//"开头,后面的内容被视为注释。 例如: ``` //这是一个单行注释 ``` 多行注释:以"/*"开头,以"*/"结尾,中间的内容被视为注释。 例如: ``` /* 这是一个多行注释 可以有多行 */ ``` 2.变量 变量是用来存储数据的容器,C 语言中,变量需要先定义再使用。 例如: ``` int a; //定义一个整型变量a a = 10; //给变量a赋值 ``` 3.常量 常量是指在程序运行过程中不能被修改的数据。在 C 语言中,常量可以分为字面常量和符号常量。 字面常量:指直接出现在代码中的常量,例如整型常量10,浮点型常量3.14等。 符号常量:使用#define关键字定义的常量,例如#define PI 3.14,表示符号常量PI的值为3.14。 例如: ``` #define PI 3.14 //定义符号常量PI int main() { int a = 10; //定义整型变量a const int b = 20; //定义常量b,其值不能被修改 float c = PI; //使用符号常量PI return 0; } ``` 二、数据类型 在 C 语言中,数据类型可以分为基本数据类型和派生数据类型。 1.基本数据类型 C 语言中的基本数据类型包括整型、浮点型、字符型和布尔型。 整型:使用int关键字定义,可以存储整数,包括有符号整型和无符号整型。 例如: ``` int a = 10; //定义一个整型变量a,其值为10 unsigned int b = 20; //定义一个无符号整型变量b,其值为20 ``` 浮点型:使用float和double关键字定义,可以存储实数。 例如: ``` float a = 3.14; //定义一个单精度浮点型变量a,其值为3.14 double b = 3.1415926; //定义一个双精度浮点型变量b,其值为3.1415926 ``` 字符型:使用char关键字定义,可以存储一个字符。 例如: ``` char a = 'A'; //定义一个字符型变量a,其值为'A' ``` 布尔型:使用bool关键字定义,可以存储真、假两个值。 例如: ``` bool a = true; //定义一个布尔型变量a,其值为真 bool b = false; //定义一个布尔型变量b,其值为假 ``` 2.派生数据类型 派生数据类型是指由基本数据类型派生而来的数据类型,包括数组、结构体、共用体和枚举类型。 数组:使用[]定义,可以存储相同类型的多个数据。 例如: ``` int arr[5] = {1, 2, 3, 4, 5}; //定义一个包含5个整型元素的数组arr ``` 结构体:使用struct关键字定义,可以存储不同类型的数据。 例如: ``` struct student { int id; char name[20]; float score; }; //定义一个结构体类型student,包含学生的学号、姓名和成绩 struct student s = {1, "Tom", 90.5}; //定义一个结构体变量s,其成员变量为1、"Tom"和90.5 ``` 共用体:使用union关键字定义,可以存储不同类型的数据,但同时只能存储其中的一种数据。 例如: ``` union data { int i; char c; }; //定义一个共用体类型data,包含一个整型成员变量i和一个字符型成员变量c union data d; d.i = 10; //给共用体变量d的整型成员变量i赋值 ``` 枚举类型:使用enum关键字定义,可以定义一些有限的、具有名字的值。 例如: ``` enum color { red, green, blue }; //定义一个枚举类型color,包含三个取值:red、green和blue enum color c = green; //定义一个枚举变量c,其值为green ``` 三、数组 数组是存储相同类型数据的集合,可以使用下标访问数组中的元素。在 C 语言中,数组的下标从0开始。 例如: ``` int arr[5] = {1, 2, 3, 4, 5}; //定义一个包含5个整型元素的数组arr int a = arr[2]; //访问数组arr中下标为2的元素,其值为3 ``` 四、函数 函数是一段完成特定任务的代码块,可以重复使用。在 C 语言中,函数包含函数头和函数体。 函数头:包括函数名、参数列表和返回值类型。 函数体:包括函数执行的代码块。 例如: ``` int add(int a, int b) { //定义一个函数add,其参数为a和b,返回值类型为int return a + b; //函数体,计算a和b的和,并返回结果 } int main() { int c = add(1, 2); //调用函数add,传入参数1和2,返回值赋值给变量c return 0; } ``` 五、指针 指针是一种特殊的变量,它存储的是内存地址。在 C 语言中,指针可以用来操作数据、传递参数和动态分配内存等。 例如: ``` int a = 10; //定义一个整型变量a,其值为10 int *p = &a; //定义一个整型指针变量p,存储变量a的地址 *p = 20; //通过指针p修改变量a的值,其值变为20 ``` 六、结构体 结构体是一种派生数据类型,它可以存储不同类型的数据。在 C 语言中,结构体使用struct关键字定义,可以包含多个成员变量。 例如: ``` struct student { int id; char name[20]; float score; }; //定义一个结构体类型student,包含学生的学号、姓名和成绩 struct student s = {1, "Tom", 90.5}; //定义一个结构体变量s,其成员变量为1、"Tom"和90.5 ``` 七、文件操作 在 C 语言中,可以使用标准库函数来进行文件操作,包括打开文件、读写文件和关闭文件等。 例如: ``` #include <stdio.h> int main() { FILE *fp; //定义文件指针 fp = fopen("test.txt", "w"); //打开文件test.txt,以写模式打开 fprintf(fp, "This is a test file.\n"); //向文件中写入数据 fclose(fp); //关闭文件 return 0; } ``` 以上是关于 C 语言的基础语法、数据类型、数组、函数、指针、结构体和文件操作等方面的简单介绍。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值