当我们创建了一个tomcat容器,如何简单部署一个web应用?如何将war包放入到容器中?也就是说怎么样把文件从宿主机中 "放入" 到容器中?
docker cp命令可以将宿主机本地上的文件复制到容器中。
docker cp [本地文件] [容器id/容器名]:[容器目录]
docker cp /opt/web.war ebe706b78059:/usr/local/webapp
cp命令只是一种简单的方法,在容器中数据管理的主要方式有两种:
- 数据卷 volume
- 挂载主机目录 bind mounts
![](https://images2018.cnblogs.com/blog/969723/201808/969723-20180801101713713-1221919415.png)
![](https://images2018.cnblogs.com/blog/969723/201808/969723-20180801101727442-1957684056.png)
![](https://images2018.cnblogs.com/blog/969723/201808/969723-20180801101738442-697360453.png)
容器启动挂载数据卷
1. 以-v 方式 docker run [选项] -v [数据卷名称]:[容器目录] [镜像名称/镜像id]
2. 以 --mount方式 docker run [选项] --mount type=bind,source=[数据卷名称],target=[容器目录] [镜像名称/镜像id]
挂载主机目录
挂载主机目录的方式有两种,-v 和 --mount
1. 以-v 方式 docker run [选项] -v [本地目录]:[容器目录] [镜像名称/镜像id]
2. 以 --mount方式 docker run [选项] --mount type=bind,source=[本地目录],target=[容器目录] [镜像名称/镜像id]
使用 -v 参数时如果本地目录不存在 Docker 会自动为你创建一个文件夹, 现在使用 --mount 参数时如果本地目录不存在, Docker 会报错 。
Docker 挂载主机目录的默认权限是 读写 , 用户也可以通过增加 readonly 指定为 只读 。
docker run [选项] --mount type=bind,source=[本地目录],target=[容器目录],readonly [镜像名称/镜像id]