容器的数据存储
容器在删除之后, 里面所有的数据都会丢失, 如果其他程序需要用到某一部分的数据那就没办法了.
所以可以将容器内的数据存储到容器之外, 比如存储到宿主机内.(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>
来源: http://www.bubuko.com/infodetail-2684615.html