Docker的数据管理和端口映射实现容器访问

2023-05-16

Docker的数据管理

存储资源类型

在使用Docker的过程中,需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至需要多个容器之间进行数据共享时,势必会设计到容器的数据管理:

  • Data Volume(数据卷)

  • Data Volume Dontainers —数据卷容器

Docker容器有两种方式 卷 和 绑定挂载 可将容器中的文件存储在宿主机的文件系统上,这样即使在容器停止之后这些文件也会被保留。如果你在Linux上运行Docker,你也可以使用tmpfs挂载。

volume , bind和tmpfs三者的相同点和区别:

  • 相同之处:

无论您选择使用哪种类型去使用,数据在容器内看起来都是相同的。它被视为容器文件系统中的目录或单个文件。

  • 不同之处:

卷(volume)存储在Docker管理的主机文件系统的一部分中(在Linux上是:/var/lib/docker/volumes/)。非Docker进程不应该修改这部分文件系统。卷是在Docker中保留数据的最佳方式。

  • 绑定挂载(bind mount):

就是把主机的本地目录挂载到容器中某个挂载点。可以存储在主机系统的任何位置。他们甚至可能是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时修改它们。

  • tmpfs挂载(tmpfs mount):

仅存储在主机系统的内存中,而不会写入主机系统的文件系统。

数据卷

1、Data Volume的特点:

  • Data Volume是目录或文件,而非没有格式化的磁盘(块设备)。

  • 容器可以读写volume中的数据。

  • volume数据可以被永久的保存,即使使用它的容器已经销毁。

2、Data Volume的使用

1)通过参数 -v 运行一个容器,将本地的 /html 目录挂载到容器的 /usr/share/nginx/html 目录上

[root@docker1 ~]# docker run --name c1 -d -v /html:/usr/share/nginx/html -p 80:80 nginx:1.14-alpine //将容器c1的 /usr/share/nginx/html 和宿主机的 /html 和做一个挂载关联

8e6ca89aac03198e79e9b91fd9be10d3f8a9f52ce384c3fd318b628949896aa9

[root@docker1 ~]# docker ps //确保容器处于运行状态

2)在宿主机上对网页内容进行修改

[root@docker1 ~]# echo “ceshi” > /html/index.html

[root@docker1 ~]# curl 192.168.159.145

ceshi

3)在容器上对网内内容进行修改

[root@docker1 ~]# docker exec -it c1 /bin/sh

/ # echo “techi again” > /usr/share/nginx/html/index.html

/ # exit

[root@docker1 ~]# curl 192.168.159.145

techi again

[root@docker1 ~]# cat /html/index.html

techi again

综上所述:已经将宿主机的 /html 与 容器的 /usr/share/nginx/html 进行了关联,也能做到持久化的存储。

端口映射实现容器访问

外部访问Docker容器

1、当使用 -P 标记是,Docker 会随机映射一个49000~49900 的端口到内部容器开放的网络端口。

2、-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上可以绑定一个容器。支持的格式有 hostPort : containerPort、 ip : hostPort : containerPort、ip : : containerPort。

将容器的5000端口映射到指定地址127.0.0.1的5000端口上:

docker run -it -d -p 127.0.0.1:5000:5000 busybox /bin/sh

将容器的4000端口映射到127.0.0.1的任意端口上:

docker run -it -d -p 127.0.0.1::4000 busybox /bin/sh

将容器的80端口映射到宿主机的8000端口上:

docker run -itd -p 8000:80 busybox /bin/sh

查看映射端口配置:

docker port 容器名/容器ID

Docker容器间通信

使用link方式使容器可以相互通信

docker run --link 可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以相互通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。

例:

docker run --name MySQL -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.6

//注:-e 是配置环境变量,–restart=always 是一个重启策略,是指容器重启之后一直保持启动状态

然后就可以向容器MySQL 数据库执行SQL语句了:

[root@docker1 ~]# docekr run -it --link MySQL --rm mysql:5.6 sh -c ‘exec mysql -uroot -p"ROOT_PASSWORD" -h"IP"’

示例:搭建论坛

[root@docker1 ~]# docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.7

[root@docker1 ~]# docker ps

[root@docker1 ~]# docker run --rm --name web --link db:db y109/discuz env

[root@docker1 ~]# docker run --name web -d -p 80:80 --link db:db y109/discuz

0d067f23fe1bdb8960125b846d79ca38ad65da2742b26965717545a398d5c1d3

[root@docker1 ~]# docker ps

通过windows浏览器访问

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker的数据管理和端口映射实现容器访问 的相关文章

随机推荐

  • docker 容器如何查看正在运行容器的端口映射

    1 查看docker容器的版本 root 64 opt docker version Docker version 19 03 5 build 633a0ea 2 查看正在运行的容器 root 64 opt docker ps CONTAI
  • docker退出关闭容器

    可以使用 docker stop 来终止一个运行中的容器 此外 xff0c 当Docker容器中指定的应用终结时 xff0c 容器也自动终止 例如对于上一章节中只启动了一个终端的容器 xff0c 用户通过 exit 命令或 Ctrl 43
  • STM32收入高也好找工作,所以我学嵌入式linux终究是错付了吗

    STM32收入高也好找工作 xff0c 所以我学嵌入式linux终究是错付了吗 经常有同学纠结问我 xff1a 我到底是学STM32还是学嵌入式linux 这个问题很多人都会有自己的看法 xff0c 今天我试着从多个角度 xff0c 把了解
  • Java面试基础篇

    Java面试基础篇 基础总结 博客链接导航 Java语言基础常识 https blog csdn net article details 88531257 J2EE基础知识 https blog csdn net article detai
  • 项目实战-外卖自提柜 3. FreeRTOS主要API的应用

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • [Spring] IntelliJ IDEA 新建工程时没有Spring选项的解决方法

    Spring IntelliJ IDEA 新建工程时没有Spring选项的解决方法 专业版 xff08 ultimate xff09 社区版 xff08 community xff09 刚开始学习Java Spring框架 xff0c 也是
  • MySQL下载与安装教程(超详细)

    一 MySQL下载 下载地址 xff1a https dev mysql com downloads mysql 根据自己需要下载对应的版本 xff0c 我下载的是mysql 5 7 31 二 MySQL安装教程 1 解压安装包 下载后得到
  • docker 开发编译环境搭建

    参与docker开源社区 xff0c 成为docker项目的contributor xff0c 首先要搭建docker的开发编译环境 xff0c 下面是docker官网介绍的编译环境的搭建 xff0c 这里做个笔记 docker的编译环境准
  • qt基础入门教程

    1 t的介绍 优点 成功案例 5 8 0 Qt是一个跨平台的C 43 43 图形用户界面应用程序框架 它为应用程序开发者提供建立艺术级图形界面所需的所有功能 爸是完全面向对象的 xff0c 很容易扩展 xff0c 并且允许真正的组件编程 推
  • Java开发自学教程!japonensisjava东莞

    三大内容 xff1a Java并发编程Java高并发编程高并发系统设计 Java并发编程 1 概览 2 进程与线程 3 Java 线程 4 共享模型之管程 5 共享模型之内存 6 共享模型之无锁 7 共享模型之不可变 8 共享模型之工具 并
  • MySQL 5.7 安装教程(全步骤、保姆级教程)

    2022年05月30日更新 本文介绍的是只安装MySQL数据库的过程 xff0c 并不包含各种其他附加工具 安装完成之后通常使用Navicat或SQLyog进行可视化操作 清华的镜像网站只保存最新的几个MySQL版本 xff0c 所以直链可
  • 手把手教你如何Vue项目打包dist文件并Tomcat发布【超级详细】

    作者 xff1a bug菌 博客 xff1a CSDN 掘金等 公众号 xff1a 猿圈奇妙屋 特别声明 xff1a 原创不易 xff0c 转载请附上原文出处链接和本文声明 xff0c 谢谢配合 版权声明 xff1a 文章里可能部分文字或者
  • node 14.19.0 版本成功解决:安装 node-sass 和 sass-loader 的过程及各 node 版本对应的 node-sass 版本号

    1 node 版本 node sass 版本及 sass loader 版本查看 xff1a 其一 我的 node 版本查看 xff1a 在命令行输入查询命令 xff1a node v 我的 node 版本为 xff1a v14 19 0
  • Shiro反序列化漏洞【详细解析】

    Shiro是什么东西 Shiro 是 Java 的一个安全框架 xff0c 执行身份验证 授权 密码 会话管理shiro默认使用了CookieRememberMeManager xff0c 其处理cookie的流程是 xff1a 得到rem
  • Go语言面试题

    1 Go有哪些数据类型 f 2 方法与函数的区别 在Go语言中 xff0c 函数和方法不太一样 xff0c 有明确的概念区分 xff1b 函数是指不属于任何结构体 类型的方法 xff0c 也就是说函数是没有接收者的 xff1b 而方法是有接
  • 项目实战-外卖自提柜 4. FreeRTOS 堆栈分配、调试技巧

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • ubuntu中关于通过编辑.bashrc文件修改提示符的简单过程

    这两天在看关于shell变量的一些内容 xff0c 突然有个想法 xff0c 就是修改下自己终端的提示符 记得先前的提示符应该是 xff1a wjl 64 wjl desktop 使用wjl账户在 home wjl目录下 root 64 w
  • MySQL高级篇知识点——索引优化与查询优化

    目录 1 数据准备 1 1 建库建表1 2 创建相关函数1 3 创建存储过程1 4 调用存储过程1 5 删除某表上的索引 2 索引失效案例 2 1 全值匹配2 2 最佳左前缀匹配原则2 3 主键插入顺序2 4 计算 函数 类型转换 xff0
  • Vue路由&&无痕浏览 - nodeJs环境搭建

    目录 一 Vue路由 1 1 路由的使用步骤 1 2 无痕浏览 二 nodeJs环境搭建 2 1 Node js是什么 2 2 配置NodeJS环境 2 3 下载github的Vue项目 一 Vue路由 1 1 路由的使用步骤
  • Docker的数据管理和端口映射实现容器访问

    Docker的数据管理 存储资源类型 在使用Docker的过程中 xff0c 需要查看容器内应用产生的数据 xff0c 或者需要将容器内数据进行备份 xff0c 甚至需要多个容器之间进行数据共享时 xff0c 势必会设计到容器的数据管理 x