目录
准备
删除容器
创建并运行一个容器
数据卷(Volumes)
挂载数据卷
虚拟机端口映射
挂载目录(Bind mounts)
挂载目录
挂载文件
部署在线项目
-
数据卷(
Volumes
)
-
挂载主机目录(
Bind mounts
)
准备
删除容器
docker rm -f $(docker ps -aq)
创建并运行一个容器
方法一
docker run -itd \
--name t1 \
-p 8080:8080 \
--mount source=v1,target=/usr/local/tomcat/webapps \
tomcat:8.5.20
方法二
docker start c1
docker exec -it c1 bash
数据卷(Volumes)
挂载和数据卷的区别:数据卷和替换整个目录而挂载只会替换一个文件夹或者一个文件,所以挂载的使用性更高;数据卷替换所有文件后可能导致tomcat 或者 mysql无法使用 因为配置文件被全部替换
为了很好的实现数据保存和数据共享,
Docker
提出了
Volume
这个概念,简单的说就是绕过默认的联合
文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。
创建数据卷
docker volume create v1
查看所有数据卷
docker volume ls
查看数据卷信息
docker volume inspect v1
删除一个
volume
docker volume rm v1
删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷
可能会占据很多空间,所以要及时删除
.
挂载数据卷
run
中可以挂载多个
数据卷
。
docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称
实际例子
docker run -it \
--name c1 \
--mount source=v1,target=/testdir \
centos
相当麻烦,要修改很多配置文件,但并非不可以
加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行
输入,直到读到结束符,如回车
查看数据卷的具体信息
docker inspect name
docker inspect v1
虚拟机端口映射
通过虚拟机端口映射可在虚拟机中运行tomcat,在本机访问tomcat端口
docker run -itd \
--name t1 \
-p 8080:8080 \
--mount source=v1,target=/usr/local/tomcat/webapps \
tomcat:8.5.20
虚拟机要开放端口
firewall-cmd --zone=public --add-port=8080/tcp
挂载目录(Bind mounts)
soft直接将webapps替换了
-v 可以挂载目录
-v 还可以单独挂载文件
挂载目录
挂载一个目录也是文件夹,先创建一个soft目录,mkidr soft
docker run -itd \
--name t1 \
-v /soft/usr/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.20
挂载文件
docker run -itd \
--name t1 \
-v /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.20
想实现远程登录到容器内部的tomcat
实现在线部署项目
需要放入tomcat的用户信息 tomcat-user.xml 文件中
还要允许外部访问 webapps/manager/META-INF/context.xml
需要提前vi编辑tomcat-users.xml 文件,编辑用户信息admin;
删除context.xml 文件中的部分内容
部署在线项目
docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.20
注:mysql nginx的配置文件都要通过挂载的形式