为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。数据卷提供了一些有用的特性:
- 数据卷可以在容器之间共享和重用。
- 对数据卷的修改会立马生效。
- 对数据卷的更新,不会影响镜像。
- 数据卷默认会一直存在,即使容器被删除。
使用数据卷时,最好通过创建和挂载数据卷来启动容器,而不是在创建或启动容器后再进行挂载,因为这样做比较麻烦,需要修改很多配置文件。
????????数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动 删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷 可能会占据很多空间,所以要及时删除.
docker volume create 数据卷名
docker volume ls
docker volume inspect 数据卷名
docker volume rm 数据卷名
docker inspect 数据卷名
在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个数据卷 。
docker run -itd \
--name 容器名字(需要你的容器没有该名字) \
--mount source=数据卷名称(你当前有的),target=容器中的对应目录 \
需要挂载镜像名称
-itd:在后台挂机,所以我们使用 -it?:创建并使用
我们新建两个窗口,并且都创建一个容器挂载在同一个数据卷里。
在一个容器里面创建一个文件,我们在第二个容器也能看到共享
如果我们删除容器我们的数据还是在的
docker volume create 数据卷名
首先我们下载好tomcat的镜像,并且开放好端口8080
docker pull tomcat:8.5.20
如果你的端口设置的时候出现?FirewallD is not running?说明你的防火墙没有打开,我们需要打开防火墙?
systemctl start firewalld
然后设置端口 8080
firewall-cmd --zone=public --add-port=8080/tcp --permanent
更新端口
firewall-cmd --reload
查看已开放的端口:
firewall-cmd --zone=public --list-ports
docker run -itd ?--name tomcat容器的名称(可以自己修改)-p 8080(主机端口:可修改):8080(虚拟机端口:不建议修改) tomcat:8.5.20(如果命令中没有 :8.5.20,后面只带 tomcat,就会默认为最新的版本)
docker run -itd --name t1 -p 8080:8080 tomcat:8.5.20
【注意】
如果出现了以下的情况
1、重启Docker服务
service docker restart #重启方法1 systemctl restart docker #重启方法2
2、清除旧的iptables规则:有时候,旧的iptables规则可能会干扰新的规则。你可以尝试清除旧的iptables规则,然后重新运行你的Docker命令。
iptables -F
之后就没有问题了
在虚拟机上或者你的本机电脑上访问都没有问题了
IP地址:8080