Docker数据持久化简述

Docker中的数据持久化方式有两种:
数据卷(Data Volumes)
挂载主机目录 (Bind mounts)

数据卷:
数据卷可以在容器之间共享和重用
对数据卷 的修改会立马生效
对数据卷 的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除
$ docker volume create my-vol #创建数据卷
$ docker volume ls #查看有哪些卷
$ docker volume inspect my-vol #查看卷详情
$ docker run -d -P --name web -v my-vol:/wepapp training/webapp python app.py #把数据卷挂载到容器的/webapp目录
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
$ docker inspect web #查看容器详情
$ docker rm -f web #强制删除运行中的容器
$ docker volume rm my-vol #删除卷
$ docker volume prune #清理无用的卷

挂载主机目录:
$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py #把宿主机的/src/webapp目录挂载到容器的/opt/webapp目录
$ docker run -d -P --name web -v $HOME/.bash_history:/root/.bash_history training/webapp python app.py #把宿主机的文件$HOME/.bash_histor挂载到容器

原文地址:https://blog.51cto.com/dongdong/2424900

时间: 2024-08-01 01:37:28

Docker数据持久化简述的相关文章

Docker数据持久化与容器迁移

上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据.如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据.那么,来一一看下各自的使用方法. 一.数据卷 数据卷特性: 可以绕过UFS文件系统,为一个或多个容器提供访问. 完全独立于容器的生存周期,因此不会在删除容器时删除其挂在的数据卷. 数据卷特点: 数据卷在容器启动初始化

Docker数据持久化(1)

一.前言 当我们使用Docker创建一个mysql的container, 数据是存储在container内的.如果有一天不小心执行了docker rm $(docker ps -aq)删除所有container. 那么mysql里的数据也会被删掉, 这是不安全的.我们需要将数据持久化, 存储在container外部. 即使删除container也不会删除原有的数据. 二.容器的缺陷 容器中的数据可以存储在容器层.但是将数据存放在容器层存在以下问题:1.数据不是持久化.意思是如果容器删除了,这些数

docker 数据持久化

confluence #!/bin/bash docker run --name confluence --volume "$PWD/data/opt":/opt --volume "$PWD/data/atlassian/confluence":/var/atlassian/confluence --detach --publish 8090:8090 confluence/confluence:6.13.0 jira #!/bin/bash docker run

Docker实现数据持久化

由于Docker技术的火爆,以至于现在大大小小的公司都在使用Docker.对Docker熟悉的朋友都明白DOcker容器运行是有生命周期的,如果docker容器发生故障,那么就意味着容器中的数据也将丢失.那么对于企业来说的话,数据是重要的!如何做到对docker容器中的数据持久化就是运维人员需要考虑的问题了!本篇博文将了解如何对容器中的数据进行持久化! 在了解Docker数据持久化之前,需要对Docker的存储类型有一个简单的了解,执行以下命令即可看出: [[email protected] ~

【赵强老师】Docker Swarm集群的数据持久化

如果Docker Swarm集群中运行了mysql.nginx等服务,这些服务的数据如果没有挂载到宿主机中,那么容器一旦停止运行,那就意味着数据丢失. 有什么方法可以解决swarm集群中运行的服务能够数据持久化呢?我们可以通过volme.nfs等方法来实现swarm集群应用数据持久化,其实也和docker数据持久化的形式是一样的. 可以用两种方式来实现: volume 默认模式:工作节点宿主机数据同步到容器内. volume NFS 共享存储模式:管理节点宿主同步到工作节点宿主,工作节点宿主同步

k8s数据持久化

k8s数据持久化 Docker容器是有生命周期的,因此数据卷可以实现数据持久化 数据卷主要解决的问题: 数据持久性:当我们写入数据时,文件都是暂时性的存在,当容器崩溃后,host就会将这个容器杀死,然后重新从镜像创建容器,数据就会丢失 数据共享:在同一个Pod中运行容器,会存在共享文件的需求 存储类(Storage class)是k8s资源类型的一种,它是有管理员为管理PV更加方便创建的一个逻辑组,可以按照存储系统的性能高低,或者综合服务质量,备份策略等分类.不过k8s本身不知道类别到底是什么,

k8s存储数据持久化,emptyDir,hostPath,基于Nfs服务的PV,PVC

在docker和K8S中都存在容器是有生命周期的,因此数据卷可以实现数据持久化. 数据卷解决的主要问题: 1.数据持久性:当我们写入数据时,文件都是暂时性的存在,当容器崩溃后,host就会将这个容器杀死,然后重新从镜像创建容器,数据就会丢失. 2.数据共享:在同一个Pod中运行容器,会存在共享文件的需求. 数据卷的类型: 1.emptyDiremptyDir数据卷类似于docker数据持久化的docker manager volume,该数据卷初分配时,是一个空目录,同一个Pod中的容器可以对该

docker mysql 数据持久化到本地、设置不区别表名大小写

Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql 还可以指定配置文件 docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cn

自己学Docker:5.Docker的数据持久化之数据卷

首先,别忘记之前的两个问题: 1. 如何保存我们在容器里的修改? 2. 如果apt-get如果不能安装时,如何在Docker中安装软件? 删除镜像命令 在此之前,先记一个命令, sudo docker rm ID/NAME 即删除创建的镜像.如 现在删除id为"cc8a23b1d624"的镜像. sudo docker rm cc8a23b1d624 可以看到,id为cc8a23b1d624的镜像被删除了. 而且可以发现,本地的/var/lib/docker/containers目录下