赞
踩
继:https://blog.csdn.net/ak739105231/article/details/105835836
docker run 的参数说明:点击
-p:指定端口:docker run -p 宿主机port:docker端口 tomcat
-P随机分配端口;
docker run -d -p 8888:8080 tomcat
如果是使用-P,就是随机分配宿主机端口:
- #格式:
- docker commit -a='打包者' -m='修改内容描述' 容器ID 命名空间/镜像名:tag
- docker commit -a='ldh' -m='tomcat with out docs by test' b4a4e5f5893b aiguigu/mytomcat:6.6.6
commit后,docker images查看本地镜像,就有了刚刚打包的镜像了;
添加数据卷的方式:1:run镜像时,直接命令添加;2.DockerFile添加
上面解说的commit提交镜像,实现了数据的传递,可以保留数据;那么如何实现宿主机与docker容器之间的数据共享呢?
数据卷,就现身了。
在运行镜像的时候,添加-v参数,实现宿主机与容器间两个文件共享数据:
- docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
- 举例:
- docker run -it -v /dataVolumeHost:/dataVolumeContainer centos
上面截图中说错了一点,宿主机里面数据卷的文件是不会覆盖的;这就可以实现【宿主机一个目录与多个容器数据共享】
下面说明一下数据卷的体现:
docker inspect 容器id #查看容器详情点击:inspect,里面可以看到数据卷的信息;
数据卷效果举例:
可以看出上面的数据卷是有rw权限的;其实在运行的时候,可以指定只读(ro)权限;【ro:readonly】
- docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
- 举例:
- docker run -it -v /dataVolumeHost:/dataVolumeContainer:ro centos
使用docker inspect 容器id 查看详情后(如下图);在容器中更改该目录数据也不可操作;
在宿主机/跟目录下,创建mydocker文件夹;在该文件夹下,创建Dockerfile文件;文件概要内容:
- #volume test
- FROM centos
- VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
- CMD echo "finished,————————————————————————————————————————》success1"
- CMD /bin/bash
可以看出,容器内有两个数据卷分别是dataVolumeContainer1、dataVolumeContainer2
使用 docker build 将上面的Dockerfile打包为镜像文件;
- docker build -f /mydocker/Dockfile -t test/centos .
- #注意最后有一个点;
运行上面的test/centos镜像实例化容器;在宿主机上:docker inspect 容器id
- #docker run -it --volume-from 容器id/name 镜像名称
- docker run -it --volume-from 4d402bbe6e16 test/centos
不管数据卷容器通过--volume-from 容器id 继承多少次;这个数据卷里面的数据对所有的容器都是共享的;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。