栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

本地文件上传至docker容器 文件挂载

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

本地文件上传至docker容器 文件挂载

方式二、Docker数据卷

  1. 什么是volume

想要了解Docker
Volume,首先我们需要知道Docker的文件系统是如何工作的。Docker镜像是由多个文件系统(只读层)叠加而成。当我们启动一个容器的时候,Docker会加载镜像层并在其上添加一个读写层。如果运行中的容器修改了现有的一个已存在的文件,那该文件将会从读写层下的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失。在Docker中,只读层以及在顶部的读写层的组合被称为Union
FIle System(联合文件系统)。

为了能够保存(持久化)数据以及共享容器间的数据,Docker提出了Volume的概念。简单来说,Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。

  1. 数据卷的特性

• 数据卷 可以在容器之间共享和重用

• 对数据卷的修改会立马生效

• 对数据卷的更新,不会影响镜像

• 数据卷 默认会一直存在,即使容器被删除

  1. 数据卷相关操作
docker volume

创建数据卷
docker volume create [OPTIONS] [VOLUME]  (如果不指定,则创虚拟volume)

查看所有数据卷
docker volume ls

查看单一或多个数据卷详情
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
删除单一数据卷
docker volume rm [OPTIONS] VOLUME [VOLUME...]
删除所有闲置数据卷
docker volume prune [OPTIONS]

可以看到创建的 Volume my-vol 保存在目录/var/lib/docker/volumes/下,以后所有针对该 Volume 的写数据都会保存中目录/var/lib/docker/volumes/my-vol/_data下。

文件挂载 先解释 -v /d/dev/test:/home/test
,表示将宿主机的D:/dev/test目录与容器内部的/home/test目录映射起来,在该目录下的操作的双向影响的

在这里D:/dev/test要写成/d/dev/test的形式

4.1.1 根据 ## 数据卷名称 ## 进行挂载
docker run -itd -v VOLUME_NAME:CONTAINER-DIR IMAGE [COMMAND] [ARG…]
示例:
将宿主机数据卷 my_vol 挂载到容器的/data/docker/volume/my_vol 目录

docker run -itd --name=vol1_ubuntu -v my_vol:/data/docker/volume/my_vol ubuntu /bin/bash

注:如果数据卷my_vol 存在将直接进行挂载,如果不存在 docker 将先自动创建数据卷再进行挂载。

挂载成功后,容器从 /data/docker/volume/my_vol目录下读取或写入数据,实际上都是从宿主机的 my_vol 数据卷中读取或写入数据。因此 Volumes 或 Bind mounts 也可以看作是容器和宿主机共享文件的一种方式。

4.1.2 宿主机文件目录绝对路径进行挂载****
docker run -it -v ABSOLUTE-HOST-DIR:CONTAINER-DIR IMAGE [COMMAND] [ARG…]
示例:

将宿主机文件目录 /opt/common/docker/volumes/my_vol2 挂载到容器的/data/docker/volume/my_vol 目录

docker run -itd --name=vol2_ubuntu -v /opt/common/docker/volumes/my_vol2:/data/docker/volume/my_vol ubuntu /bin/bash
注:宿主机的文件目录必须为绝对路径。

4.1.3 根据宿主机文件绝对路径进行挂载

docker run -itd -v VOLUME_NAME:CONTAINER-DIR IMAGE [COMMAND] [ARG…]
示例:

将宿主机文件 ~/.bash_history 挂载到容器的/.bash_history

docker run -itd --name=vol3_ubuntu -v ~/.bash_history:/.bash_history ubuntu /bin/bash
4.1.4 挂载匿名卷

v 参数如果不加任何宿主机相关卷信息docker将创建一个匿名卷进行挂载
docker run -itd -v CONTAINER-DIR IMAGE [COMMAND] [ARG…] 示例:

挂载匿名卷到容器的/data/docker/volume/my_vol 目录

docker run -itd --name=vol4_ubuntu -v /data/docker/volume/my_vol ubuntu /bin/bash

## 本地文件上传至docker容器 文件上传到docker容器 本地与容器互传 服务器的文件复制到docker容器内
**注:此方式虽然也可以管理但是数据不交融,基本不会使用,仅做了解**

> 问题 在往docker容器中直接使用rz上传文件时,速度很慢,所以考虑使用从本地上传至容器

拿到容器ID

docker ps -a

将本地文件上传到容器的指定目录中 一定要写绝对路径而不是相对路径 容器名字使用容器id

docker cp 本地文件路径 ID全称(容器id):容器路径


容器到宿主机 一定要写绝对路径而不是相对路径 容器名字使用容器id


注:此方式虽然他也可以管理但是数据不交融,基本不会使用,仅做了解

docker宿主机与容器的交互 文件互传 数据交互 数据传输
docker映射外部文件夹

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号