Docker 学习(三)——数据管理、端口映射、容器互联

一、数据管理

容器中的管理数据主要有两种方式:

        数据卷 (Data Volumes): 容器内数据直接映射到本地主机环境;
        数据 卷容器( Data Volume Containers): 使用特定容器维护数据卷

1.数据卷

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作

除了使用 volume 子命令来管理数据卷外,还可以在创建容器时主机的任意路径 挂载到容器内作为数据卷,这种形式创建的数据卷称为绑定数据卷。在用 docker [container] run命令的时候,可以使用 mount 选项来使用数据卷。 mount 项支持三种类型的数据卷,包括

  • volume: 普通数据卷,映射到主机var/ lib /docke /volumes径下
  • bind :绑定数据卷,映射到主机指定路径下;
  •  tmpfs :临时数据卷,只存在于内存中

绑定数据卷:如果挂载的路径在宿主机上不存在,Docker 会自动创建该路径。

#创建一个 web1 容器作为数据卷容器

[root@Docker ~]# docker run --name web1 -v /var/www:/test1 -it centos:7 /bin/b

[root@a89b95b269bc /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  test1  usr
bin                etc  lib   media  opt  root  sbin  sys  tmp    var
[root@a89b95b269bc /]# echo "I am test1" >/test1/haha.txt
[root@a89b95b269bc /]# exit
exit

这里宿主机上的 /var/www 目录不存在,Docker 则会自动创建这个目录 (但仅限于是目录,不是文件,否则会报错)

#返回宿主机检查 

2.数据卷容器

  如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用

#创建一个 web2 容器作为数据卷容器

[root@Docker ~]# docker run --name web2 -v /test1 -v /test2 -it centos:7 /bin/bash
[root@ce3ce76e3b7c /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  test1  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  test2  usr
[root@ce3ce76e3b7c /]# echo "this is test1" >/test1/haha.txt
[root@ce3ce76e3b7c /]# echo "this is test2" >/test2/haha.txt
[root@ce3ce76e3b7c /]# exit
exit

#使用  --volumes-from 来挂载 web2 容器中的数据卷到新的容器中

[root@Docker ~]# docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash
[root@049bca80ec53 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  test1  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  test2  usr
[root@049bca80ec53 /]# cat /test1/haha.txt 
this is test1
[root@049bca80ec53 /]# cat /test2/haha.txt 
this is test2

3. 利用数据卷容器来迁移数据

可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移

#备份 web1 数据卷

# 建立容器并指定使用卷到要备份的容器
[root@Docker ~]# docker run --volumes-from web1 \
-v $(pwd):/backup --name woker1 centos:7 \	# 把当前目录挂载到容器中用于保存备份数据
tar zcf /backup/backup.tar /test1		# 备份数据到本地

#验证备份文件
[root@Docker ~]# tar -tvf backup.tar 
drwxr-xr-x root/root         0 2025-03-04 15:44 test1/
-rw-r--r-- root/root        11 2025-03-04 17:49 test1/haha.txt

#传送备份文件到目标服务器

[root@Docker ~]# scp backup.tar 192.168.8.164:~
root@192.168.8.164's password: 
backup.tar                       100%   10KB   7.2MB/s   00:00   

#数据恢复

[root@centos ~]# docker run --rm --volumes-from new_web -v $(pwd):/backup centos:7 \
>   bash -c "mkdir -p /data && tar xvf /backup/backup.tar -C /data -m -p"
test1/
test1/haha.txt
[root@centos ~]# 

二、端口映射

  • 在启动容器的时候,如果不指定对应的端口,在容器外是无法通过网络来访问容器内的服务。端口映射机制将容器内的服务提供给外部网络访问,实质上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务。
  • 当容器中运行一些网络应用, 要让外部访问这些应用时, 可以通过-P或-p参数来指
    定端口映射。 当使用-P(大写的)标记时, Docker 随机映射一个   端口 到内部容器开放的网络端口。 -p (小写的)则可以指定要映射的端口,并且,在一个指定端口上只可以绑定 一个容器。
    [root@Docker ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [root@Docker ~]# docker run -d --name test1 -P nginx  #随机映射
    16956ad6da7386eb6f21dcaeed06ee8e7b479886cc6984ebc1c2fb361a52aed1
    [root@Docker ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                     NAMES
    16956ad6da73   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 6 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   test1
    [root@Docker ~]# docker run -d --name test2 -p 43000:80 nginx   #指定映射端口43000
    81231f9db339425c0a4afea3f3790c3e9ff6445c564433779ee2cd0b477f0c38
    [root@Docker ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
    81231f9db339   nginx     "/docker-entrypoint.…"   2 seconds ago    Up 1 second     0.0.0.0:43000->80/tcp, :::43000->80/tcp   test2
    16956ad6da73   nginx     "/docker-entrypoint.…"   39 seconds ago   Up 39 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   test1
    

三、容器互联

容器的互联(linking)是一种让多个容器中的应用进行快速交互的方式。它会在源和接收容 器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。
使用--link参数可以让容器之间安全地进行交互。
下面先创建一个新的数据库db 源容器:
[root@Docker ~]# docker run -itd -P --name web1 centos:7 /bin/bash
114734f78edf70847a8bc53686d1544e30e189c9bd7426a26141aedfaae55d51
然后创建一个新的web容器,并将它连接到db容器:
[root@Docker ~]# docker run -itd -P --name web --link db:db centos:7 /bin/bash
355dba6decddaf989fbd5e91813f91b09057801db3bf403a0b0060136e6d1a21
#进入到web容器,然后ping db
[root@Docker ~]# docker exec -it web bash
[root@355dba6decdd /]# ping db

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解锁Egg.js:从Node.js小白到Web开发高手的进阶之路

一、Egg.js 是什么 在当今的 Web 开发领域,Node.js 凭借其事件驱动、非阻塞 I/O 的模型,在构建高性能、可扩展的网络应用方面展现出独特的优势 ,受到了广大开发者的青睐。它让 JavaScript 不仅局限于前端,还能在服务器端大展身手&…

我的ChatGPT怎么登不上?

近期,不少用户反馈在使用ChatGPT时遇到登录困难、连接超时等问题。本文将从技术角度分析常见原因,并提供合规、安全的解决方案,同时结合开发者实际需求推荐实用工具,助您高效应对登录障碍。 ChatGPT登录失败的常见原因 网络环境限…

小米手机如何录制屏幕?手机、电脑屏幕录制方法分享

大家最近有没有遇到想记录手机屏幕操作的情况? 比如精彩的游戏瞬间、有趣的视频教程,或者需要录制屏幕来制作演示材料。小米手机在这方面可是个好帮手,今天就来给你好好唠唠,小米手机如何录制屏幕,以及后续如何处理这…

【jenkins配置记录】

全局工具配置: D:\Program Files\Java\jdk1.8.0_281 D:\Program Files\Git\bin\git.exe E:\allure-2.13.2 2. GIT 3. 定时任务 H 8 * * 1-5 4. 构建触发器 5. 构建后操作 Allure Report 吐血记录:报告路径可以为 workspace 相对路径 6. 系统配置 em…

修改hosts文件,修改安全属性,建立自己的DNS

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

详解LSM树

目录 什么是LSM树 磁盘结构与顺序IO LSM树结构 LSM树的写入 SSTable合并 LSM树的读取 LSM树的删除 总结 什么是LSM树 LSM 树全名日志结构合并树(Log-Structured Merge Tree),是一种用于存储和管理数据的树状数据结构,常用…

3d投影到2d python opencv

目录 cv2.projectPoints 投影 矩阵计算投影 cv2.projectPoints 投影 cv2.projectPoints() 是 OpenCV 中的一个函数,用于将三维空间中的点(3D points)投影到二维图像平面上。这在计算机视觉中经常用于相机标定、物体姿态估计、3D物体与2D图…

Spring Boot集成Minio笔记

一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…

github进不去,一直显示错误

1、进入网址Dns检测|Dns查询 - 站长工具 2、复制检测出来的任意一个ip 3、打开电脑的文件夹&#xff1a;C:\Windows\System32\drivers\etc 下的hosts文件下复制这个ip地址 20.205.243.166 4、winr 打开cmd&#xff0c;输入ipconfig/flushdns ipconfig/flushdns出现这个就可以…

【商城实战(2)】商城架构设计:从底层逻辑到技术实现

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab 目录 BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab分类效果基本介绍BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测一、引言1.1、研究背景和意义1.2、研究现状1.3、研究目…

Windows下使用ShiftMediaProject方法编译FFmpeg

Windows SDK 8.1版本不支持dxva vp9! 需要10.0.17134.0&#xff01;或者把config编译选项去掉 1.下载源码 https://github.com/ShiftMediaProject 2.创建ShiftMediaProject文件夹 把下载好的源码放入source 3.进入SMP执行 project_get_dependencies.bat 自动下载ffmepg依赖项…

C++ Primer 动态数组

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

第四十一:Axios 模型的 get ,post请求

Axios 的 get 请求方式 9.双向数据绑定 v-model - 邓瑞编程 Axios 的 post 请求方式&#xff1a;

神经网络:AI的网络神经

神经网络&#xff08;Neural Networks&#xff09;是深度学习的基础&#xff0c;是一种模仿生物神经系统结构和功能的计算模型。它由大量相互连接的节点&#xff08;称为神经元&#xff09;组成&#xff0c;能够通过学习数据中的模式来完成各种任务&#xff0c;如图像分类、语音…

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起&#xff1a;128GB的TF卡&#xff0c;只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下&#xff0c;NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…

FPGA之硬件设计笔记-持续更新中

目录 1、说在前面2、FPGA硬件设计总计说明3、 原理图详解 - ARITX - 7 系列3.1 顶层框图介绍3.2 FPGA 电源sheet介绍&#xff1a;3.2.1 bank 14 和 bank 15的供电3.2.2 bank 0的供电3.2.3 Bank34 35 的供电 3.3 核电压和RAM电压以及辅助电压 4 原理图详解-- Ultrascale ARTIX4.…

【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点

《弹性裸金属服务器》系列&#xff0c;共包含以下文章&#xff1a; 弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点弹性裸金属服务器和神龙虚拟化&#xff08;二&#xff09;&#xff1a;适用场景弹性裸金属服务器和神龙虚拟化&#xff08;三&a…

【Azure 架构师学习笔记】- Azure Databricks (15) --Delta Lake 和Data Lake

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (14) – 搭建Medallion Architecture part 2 前言 ADB 除了UC 这个概念之外&#xff0c;前面【Azure 架构师学习笔记】- Azure Databricks (1…

字节跳动发布 Trae AI IDE!支持 DeepSeek R1 V3,AI 编程新时代来了!

3 月 3 日&#xff0c;字节跳动重磅发布国内首款 AI 原生集成开发环境&#xff08;AI IDE&#xff09;——Trae 国内版&#xff01; Trae 不只是一个传统的 IDE&#xff0c;它深度融合 AI&#xff0c;搭载 doubao-1.5-pro 大模型&#xff0c;同时支持DeepSeek R1 & V3&…