首页 > 其他分享 >Docker(三)存储持久化

Docker(三)存储持久化

时间:2023-06-09 19:35:11浏览次数:53  
标签:容器 存储 持久 mnt webroot nfs var Docker root

一、存储持久化

docker容器不保存任何数据

重要数据可以使用外部卷存储(数据持久化)

容器可以映射真实主机目录或共享存储为卷

将外部卷映射到容器中提供持久化存储(规则:目录不存在就自动创建;目录存在就直接覆盖掉。语法:docker run -v 外部目录:容器目录 -it 容器名:标签 bash)

外部卷可以给多个容器映射使用,这种方式可以解决容器间共享问题

因此,可以使用以下方式实现不同宿主机上的容器之间文件共享问题:

部署NFS服务:

[root@node1 ~]# yum install -y nfs-utils

root@node1 ~]# mkdir /var/webroot

[root@node1 ~]# chmod 777 /var/webroot/

[root@node1 ~]# vim /etc/exports  #表示将本地/var/webroot目录作为共享磁盘,使用权限为可读可写

/var/webroot    *(rw)

[root@node1 ~]# systemctl start nfs

[root@node1 ~]# systemctl enable nfs

挂载并使用nfs(Docker1节点):

[root@docker1 ~]# yum install -y nfs-utils

[root@docker1 ~]# showmount -e 192.168.0.30  #查看192.168.0.30上可挂载的nfs

Export list for 192.168.0.30:
/var/webroot *

[root@docker1 ~]# mount -t nfs 192.168.0.30:/var/webroot /mnt  #挂载远程磁盘到/mnt

[root@docker1 ~]# docker run -itd -v /mnt:/var/www/html httpd:latest  #将宿主机/mnt目录映射到容器的/var/www/html目录 #http:latest镜像是从网上下载的

[root@docker1 ~]# vim /mnt/index.html  #在宿主机的/mnt下新建一个index页面,内容为akakak

akakak

[root@docker1 ~]# curl 172.17.0.2  #查看容器发布的http内容变为了akakak

akakak

挂载并使用nfs(Docker2节点):

[root@docker2 ~]# yum install -y nfs-utils

[root@docker2 ~]# mount -t nfs 192.168.0.30:/var/webroot /mnt

[root@docker2 ~]# docker run -itd -v /mnt:/var/www/html 192.168.0.30:50000/myos:httpd  #从镜像仓库创建并运行http容器

[root@docker2 ~]# echo bsbsbs>/mnt/index.html

[root@docker2 ~]# curl 172.17.0.2

bsbsbs

因此,如果有多个http容器的话,只需要在一个Docker节点改变挂载目录下的index文件内容就可以改变所有http容器发布的内容,同时这个index还可以永久保存到nfs服务器上,即使容器坏了也不会消失。

 

标签:容器,存储,持久,mnt,webroot,nfs,var,Docker,root
From: https://www.cnblogs.com/vorn/p/17470098.html

相关文章

  • 【docker】docker build 报错
    报错信息dockerbuild的时候,报错了:[+]Building0.2s(3/3)FINISHED=>[internal]lo......
  • 随笔(十六)『docker 安装 naocs 简单版』
    1、拉取镜像dockerpullnacos/nacos-server2、挂载目录mkdir-p/mydata/nacos/logs/mkdir-p/mydata/nacos/init.d/3、启动nacosdockerrun\--namenacos-d\-p8848:8848\--privileged=true\--restart=always\-eJVM_XMS=256m\-eJVM_XMX=256m\-eMODE=......
  • 宿主机 vim 编辑 docker 容器内部文件
    容器所有文件,一定在宿主机某个位置。具体位置是:/proc/<container-pid>/root,这个位置就是容器系统根目录所在的位置,注意只有运行中的容器才有pid,停止中的容器pid为0。查看一个容器pid可用命令dockerinspect-f'{{.State.Pid}}' <container> 示例(注意:需要root权......
  • Docker创建无密码ssh容器
    需求希望创建一个container进行调试,使用ssh登陆无需密码。实现Dockerfile如下FROMubuntu:20.04RUNpasswd-droot&&apt-getupdate&&\DEBIAN_FRONTEND=noninteractiveapt-getinstall-yq\s6ssh&&mkdir/run/sshd&&mkdir-p/etc/s6/ss......
  • 特定情况下docker run --restart=always重启失效的情况
    这是原cicd中使用的语句 在服务器reboot之后,可以看到服务没有随之重启。 通过dockerps-a--no-trunc可以看到--restart=always被当成arg放在了作为entry-point的脚本后面作为传参 这里做了一个猜想,将--restart=always置于dockerrun正后方,而非镜像名后,修改如下:......
  • docker命令
    Docker#常用命令(1)查看运行情况dockerps-a(2)日志查看dockerlogs-fIMAGE(3)进入容器dockerexec-itIMAGEsh(4)删除容器dockerrm-fIMAGE(5)退出容器exit(6)下载镜像dockerpullname:tag(7)查看本地已下载的镜像do......
  • 高带宽pSRAM S27KS0643GABHV023/S27KS0643GABHA020(64Mbit)S27KS0643GABHA023 HyperRAM
    高带宽pSRAMS27KS0643GABHV023/S27KS0643GABHA020(64Mbit)S27KS0643GABHA023HyperRAM™存储器—明佳达供求产品说明:S27KS064364MbitHYPERRAM™器件是一种高速CMOS,自刷新DRAM,具有xSPI(Octal)接口。DRAM阵列使用需要定期刷新的动态单元。当内存没有被xSPI接口主(主机)主动读写......
  • 使用CNI网络插件(calico)实现docker容器跨主机互联
    目录一.系统环境二.前言三.CNI网络插件简介四.常见的几种CNI网络插件对比五.Calico网络之间是如何通信的六.配置calico让物理机A上的docker容器c1可以访问物理机B上的docker容器c26.1安装部署etcd集群6.2安装部署docker6.3配置calico6.4使用Calico实现Docker容器跨主机互联七.......
  • 1、Docker介绍、组成、安装、运行容器的核心技术
    Dockerdocker的介绍和基础操作docker单机容器dockercompose单机多个容器k8s多机多个容器container即容器,集装箱docker就是搬运集装的码头工人,管理容器的管理工具Docker的组成Docker主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器,也称为宿主机,node节点D......
  • 2、Docker二进制安装脚本
    #!/bin/bashDOCKER_VERSION=20.10.19#URL=https://mirrors.aliyun.comURL=https://download.docker.comprepare(){if[!-edocker-${DOCKER_VERSION}.tgz];then#wget${URL}/docker-ce/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz......