容器的数据存储

容器在删除之后,里面所有的数据都会丢失,如果其他程序需要用到某一部分的数据那就没办法了。

所以可以将容器内的数据存储到容器之外,比如存储到宿主机内。(Docker提供了好几种方法)

将容器内的数据存放到容器外可以通过将宿主机内的某个目录挂载给容器作为某一部分的存储空间使用。

先在/root目录下新建一个名为data的目录以供容器使用。

[root@promote ~]# mkdir data
[root@promote ~]# ls
data

接着创建容器并将data目录挂载给容器作为存储。

使用-v 宿主机目录:容器目录.

这里以http为例,因为http存放静态网页的默认位置在/usr/local/apache2/htdocs,所以将data目录用作此目录的存储空间,专门用来存放网页。

[root@promote ~]# docker run -d --name http -p 80:80 -v ~/data:/usr/local/apache2/htdocs docker.io/httpd
c6b71842d961663d380cecae5373c10236109e860bad18207195e9636ddb121f

这样就挂载好了。

现在在data目录下新建一个index.html静态网页试试。

[root@promote ~]# cd data/
[root@promote data]# cat index.html
<html>
<body>This is a test</body>
</html>

接着访问宿主机的80端口查看。

[root@promote ~]# curl 127.0.0.1:80
<html>
<body>This is a test</body>
</html>

说明data目录挂载到容器成功。

http容器里原来的index.html被覆盖了。

如果访问宿主机80端口时被拒绝访问:

[root@promote ~]# curl 127.0.0.1:80
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br />
</p>
</body></html>

可以尝试关闭selinux再访问,setenforce 0是临时关闭selinux

[root@promote ~]# setenforce 0
[root@promote ~]# curl 127.0.0.1:80
<html>
<body>This is a test</body>
</html>

Docker容器学习与分享11的更多相关文章

  1. Docker容器学习与分享07

    Docker容器网络 在分享06中学完了bridge网络,接着学习none网络和host网络. Docker在安装时会在host上默认创建三个网络,分别是bridge.host.null. [root ...

  2. Docker容器学习与分享10

    Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...

  3. Docker容器学习与分享04

    Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...

  4. Docker容器学习与分享03

    Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...

  5. Docker容器学习与分享09

    Docker容器之间的相互通信 先新建两个不同的网段,就用分享08里的两个网段作为新建的网段. [root@promote ~]# docker network ls NETWORK ID NAME ...

  6. Docker容器学习与分享06

    Docker容器网络 Docker有三种原生网络:none网络.host网络.bridge网络. 先来学习一下bridge网络. 首先使用ifconfig命令查看一下本机的网络设备: 从图中可以看见多 ...

  7. Docker容器学习与分享05

    Docker镜像操作 学完了一些最基本的操作之后,我学习了一些关于docker镜像的基本操作. 首先来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命 ...

  8. Docker容器学习与分享02

    1.docker容器的创建 首先运行一个centos容器,感受一下Docker容器的便捷 首先先看一下镜像仓库 发现仓库里没有镜像,也就是没有创建容器的模板,这时考虑从REPOSITORY中拉取镜像( ...

  9. Docker容器学习与分享01

    1.什么是容器? 容器技术是一种虚拟化的方案,与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器是直接运行在操作系统内核之上的用户空间. 所以容器虚拟化又 ...

随机推荐

  1. hibernate辅助类含分页

    package com.cy.utils; import java.io.Serializable; import java.util.Iterator; import java.util.List; ...

  2. angular ng-repeat元素swiper无法滑动问题解决

    前言 angular中ng-repeat元素swiper无法滑动,angular与swiper冲突. 1.问题 在项目中,我需要利用ng-repeat循环li,比如一个nav导航条,在加入swiper ...

  3. [USACO 06DEC]Milk Patterns

    Description 题库链接 给定一个长度为 \(n\) 的字符串,求至少出现 \(k\) 次的最长重复子串,这 \(k\) 个子串可以重叠. \(1\leq n\leq 20000\) Solu ...

  4. Git 使用SSH密钥操作

    git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: git协议链接图例 : ↓ https协议链接图例:↓ git使用https协议,每次pull ...

  5. C#图片处理类

    转载來源:简书 转载作者:幻凌风 转载来源:https://www.jianshu.com/p/e1bab83e87ce using System; using System.Collections; ...

  6. python变量作用域,函数与传参

    一.元组传值: 一般情况下函数传递参数是1对1,这里x,y是2个参数,按道理要传2个参数,如果直接传递元祖,其实是传递一个参数 >>> def show( x, y ): ... p ...

  7. CSS-网站导航栏标题之间的分隔符

    在一个网页上,尤其是导航栏文字与文字之间,大多数情况下都会有分隔符,也就是文字之间的一个小竖线,这个小小的分隔符,每个网站都有不同的样式,常用的写法就是用标签的边框,这个写法也比较简单,用起来也方便, ...

  8. longing加载中实例

    利用图片播放 <div class="wrap" id="wrap" style="position: inherit; height: 604 ...

  9. HTML 代码复用实践

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果是制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面的数量上去了 ...

  10. 前端开发面试题-JavaScript(转载)

    本文由 本文的原作者markyun 收集总结. 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol ...