创建和使用桥接网络

docker network create  --driver bridge  --subnet 192.168.13.0/24  --gateway 192.168.13.1 mqynet

详情

[root@docker ~]# docker network inspect mqynet
[
{
"Name": "mqynet",
"Id": "412a5fcb7d5b08cf80f4bec33f258b572dfd7d37f36b325a9a6426eb6a7518cf",
"Created": "2022-04-20T19:11:51.020561175+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.13.0/24",
"Gateway": "192.168.13.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
[root@docker ~]#

创建四个容器使之相互ping通

docker run -dit --name alpine1 --network mqynet alpine ash
docker run -dit --name alpine2 --network mqynet alpine ash
docker run -dit --name alpine3 --network mqynet alpine ash
docker run -dit --name alpine4 --network mqynet alpine ash docker exec -it alpine1 ping alpine1
docker exec -it alpine1 ping alpine2
docker exec -it alpine1 ping alpine3
docker exec -it alpine1 ping alpine4

docker卷的使用

创建卷

[root@docker ~]# docker volume create supermqy
supermqy

查看卷

[root@docker ~]# docker volume inspect supermqy
[
{
"CreatedAt": "2022-05-04T16:10:26+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/supermqy/_data",
"Name": "supermqy",
"Options": {},
"Scope": "local"
}
]
[root@docker ~]# docker volume inspect supermqy --format '{{ .Mountpoint }} {{ .Name}}'
/var/lib/docker/volumes/supermqy/_data supermqy
[root@docker ~]#

挂载卷

docker run -dit --name mqytest --mount source=supermqy,destination=/world centos /bin/bash

查看卷是否挂载成功

docker inspect fc83217fe0b873f9d14010f8f7c6502d607e

[root@docker ~]#

            "Type": "volume",
"Name": "supermqy",
"Source": "/var/lib/docker/volumes/supermqy/_data",
"Destination": "/world",
"Driver": "local",
"Mode": "z",

先删容器再删卷

docker rm -f supermqy
docker volume rm fc83217fe0b873f9d14010f8f7c6502d607e

挂载主机目录

注:此实验中

--mount在目录不存在时会报错

-v 则会自动创建目录

一个更严谨一个更方便

docker run -dti --name mqydev --mount type=bind,source='/fox/target',target=/world centos

查看验证绑定

[root@docker fox]# docker inspect f68963bdf1ef63f3aec102a88919db --format='{{json .Mounts}}'
[{"Type":"bind","Source":"/fox/target","Destination":"/world","Mode":"","RW":true,"Propagation":"rprivate"}]
[root@docker fox]#

删除

docker rm -f mqydev

只读挂载

[root@docker fox]# docker run -dti --name mqydev --mount type=bind,source='/fox/target',target=/world,readonly centos
fa936c5bb9dca13217a35ed2c48c354e8ac90b1d6f58567e93aa326119e0af0c
[root@docker fox]# docker exec -ti mqydev /bin/bash
[root@fa936c5bb9dc /]#
[root@fa936c5bb9dc /]#
[root@fa936c5bb9dc /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr world
[root@fa936c5bb9dc /]# cd world/
[root@fa936c5bb9dc world]# ls
aaa
[root@fa936c5bb9dc world]# touch aa
touch: cannot touch 'aa': Read-only file system
[root@fa936c5bb9dc world]#

测试容器填充卷

挂载填充卷

[root@docker fox]#  docker run -d --name=mqynginx  --mount source=nginx-vol,destination=/usr/share/nginx/html nginx
5965571a15cf46a86bb08aed1af654255a3ccd708417ab5317f0cb3d28b29d82

查看该卷详情

[root@docker fox]# docker volume inspect nginx-vol
[
{
"CreatedAt": "2022-05-04T16:39:44+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data",
"Name": "nginx-vol",
"Options": null,
"Scope": "local"
}
]
[root@docker fox]#

查看该卷所在的目录内容

[root@docker fox]# ls -l /var/lib/docker/volumes//nginx-vol/_data/
total 8
-rw-r--r--. 1 root root 497 Dec 28 23:28 50x.html
-rw-r--r--. 1 root root 615 Dec 28 23:28 index.html
[root@docker fox]#

容器里的目录映射到了主机里

启动另一个容器挂载该卷,以使用其中预先填充的内容

[root@docker fox]# docker run -dit --name mqytest3 --mount source=nginx-vol,destination=/world centos /bin/bash
1e2bd2ec6955fbf7f1dc79266355cd6042277f13224cc8236576853727a5d1a7
[root@docker fox]#

查看容器中的挂载目录

[root@docker fox]# docker exec -it  mqytest3  ls /world
50x.html index.html

删除卷和容器

[root@docker fox]# x
5965571a15cf
fa936c5bb9dc
[root@docker fox]# docker volume rm -f nginx-vol
nginx-vol
[root@docker fox]# x为函数 删除所有容器
x ()
{
docker rm -f $(docker ps -aq)
}
[root@docker fox]# declare

docker加速器

修改加速器:https://www.cnblogs.com/xiugeng/p/16043012.html#_label0_3

文件的遮盖挂载

[root@docker fox]# docker run -tid --name broken-test --mount type=bind,source=/tmp,target=/etc/yum.repos.d centos
39c3835b9d0d11bea9ce8605c995ce02697eeb8c83dedbae8239292ff37ccad4
[root@docker fox]#
[root@docker fox]#
[root@docker fox]# docker exec -it broken-test /bin/bash
[root@39c3835b9d0d /]#
[root@39c3835b9d0d /]#
[root@39c3835b9d0d /]#
[root@39c3835b9d0d /]# cd /etc/yum.repos.d/
[root@39c3835b9d0d yum.repos.d]# ls
vmware-root_704-2990744159 vmware-root_713-4290166671
[root@39c3835b9d0d yum.repos.d]# cd

容器里原来的文件被挂载文件遮盖,取消挂载则会出现

docker 容器挂载技术的更多相关文章

  1. Docker容器化技术(下)

    Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...

  2. Docker容器化技术(上)

    目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...

  3. Docker 容器相关技术

    Docker 依赖的Linux内核特性 Namespaces 命名空间 Control groups (cgroups) 控制组 理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理 N ...

  4. docker容器虚拟化技术

    简单来说,在Windows系统下安装各种运行环境的坑简直不要太多了(● ̄(エ) ̄●),并不仅限于docker.Nginx.PHP.Python等等,我会尽详细写出实际过程中遇到的各种各样的奇葩问题 1 ...

  5. 新一代Java程序员必学的Docker容器化技术基础篇

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  6. Docker容器化技术

    1. 初始Docker 1.1 Docker概念 Docker概念:Docker是一个开源的应用容器引擎 诞生于2013年初,基于Go实现,dotCloud公司出品(后改名为Docker Inc) D ...

  7. Docker容器挂载宿主目录的情形分析

    Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...

  8. docker 学习(七) docker 容器挂载

    1:docker的默认存放位置: $ sudo su # cd /var/lib/docker # ls -F containers/ graph/ repositories volumes/     ...

  9. Docker容器相关技术

    docker需要依赖的Linux内核特性:(1)Namespaces 命名空间PID(Process ID) 用来隔离进程NET(Network) 管理网络接口IPC(InterProcess com ...

  10. docker容器挂载docker.sock,在容器内部直接与docker守护进程通信进行接口调用

    一.docker container实现 1.docker容器启动时挂载docker.sock docker run -it -- 2.curl调用接口 curl -s --unix-socket / ...

随机推荐

  1. redis RDB AOF数据持久化

    目录 redis RDB持久化[手工持久化]: redis RDB持久化条件配置[适合用于备份]redis rdb持久化策略 redis AOF持久化 redis AOF持久化配置 redis RDB ...

  2. 箭头函数中的this指向

        // 箭头函数中的this指向         //     如果是箭头函数,this指向是,父级程序的,this的指向         //       如果父级程序是一个函数,函数也是有t ...

  3. C#.NET WinForm 多个子Task嵌套 Task.WaitAll 阻塞UI线程

    C#.NET WinForm 多个子Task(子线程)嵌套  Task.WaitAll 阻塞UI线程 (界面) 情况: DoIt()方法内,开了2个Task 执行任务,子任务中会更新UI. DoIt( ...

  4. EF MYSQL 出现:输入字符串的格式不正确

    实体类字段和数据库类型不一致. 比如:数据库是char类型字段,程序里声明为int.

  5. Zenlayer如何将万台设备监控从Zabbix迁移到Flashcat

    作为全球首家以超连接为核心的云服务商,Zenlayer 致力于将云计算.内容服务和边缘技术融合,为客户提供全面的解决方案.通过构建可靠的网络架构和高效的数据传输,Zenlayer 帮助客户实现更快速. ...

  6. asp.net中gridview隐藏一列并且使用这列数据的方法

    方法一:在RowCreated事件中添加如下代码可隐藏此列,使用this.grdView.Rows[index].Cells[1].Text获取值,index为行号. 1 protected void ...

  7. ES进阶

    https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html 1.监控接口 访问es的_cat接口,获取不同的属性 ...

  8. List<Map<String, Object>> 按照时间排序

    // 准备一个集合 List<Map<String, Object>> resList= Lists.newArrayList(); Map<String, Object ...

  9. JavaScript中如何终止forEach循环&跳出for(双层)循环?

    在JavaScript中,forEach方法是用于遍历数组的,通常没有直接终止循环的机制.然而,我们可以使用一些技巧来模拟终止forEach循环.以下是几种常见的方法 1.使用return语句:在fo ...

  10. FreeRTOS简单内核实现7 阻塞链表

    0.思考与回答 0.1.思考一 如何处理进入阻塞状态的任务? 为了让 RTOS 支持多优先级,我们创建了多个就绪链表(数组形式),用每一个就绪链表表示一个优先级,对于阻塞状态的任务显然要从就绪链表中移 ...