docker(四):docker指定port运行、commit、数据卷(初解)、DockerFile
继:https://blog.csdn.net/ak739105231/article/details/105835836一、docker指定port运行tomcat容器docker run 的参数说明:点击-p:指定端口:docker run -p 宿主机port:docker端口 tomcat-P随机分配端口;docker run -d -p 8888:8080 tomc...
继:https://blog.csdn.net/ak739105231/article/details/105835836
一、docker指定port运行tomcat容器
docker run 的参数说明:点击
-p:指定端口:docker run -p 宿主机port:docker端口 tomcat
-P随机分配端口;
docker run -d -p 8888:8080 tomcat
如果是使用-P,就是随机分配宿主机端口:
二、commit打包镜像
#格式:
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容器之间的数据共享呢?
数据卷,就现身了。
1.run镜像时,直接命令添加数据卷
在运行镜像的时候,添加-v参数,实现宿主机与容器间两个文件共享数据:
docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
举例:
docker run -it -v /dataVolumeHost:/dataVolumeContainer centos
上面截图中说错了一点,宿主机里面数据卷的文件是不会覆盖的;这就可以实现【宿主机一个目录与多个容器数据共享】
下面说明一下数据卷的体现:
docker inspect 容器id #查看容器详情点击:inspect,里面可以看到数据卷的信息;
数据卷效果举例:
- 在dataVolumeHost上添加test001.txt ————》dataVolumeContainer目录下有么? 有!
- 在dataVolumeContainer上添加test002.txt ————》dataVolumeHost目录下有么? 有!
- 当容器关闭后(没有删除),宿主机对数据卷做得更改,在容器重启(注意:是重启容器,不是重新run镜像)后,是否更新?是!
可以看出上面的数据卷是有rw权限的;其实在运行的时候,可以指定只读(ro)权限;【ro:readonly】
docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
举例:
docker run -it -v /dataVolumeHost:/dataVolumeContainer:ro centos
使用docker inspect 容器id 查看详情后(如下图);在容器中更改该目录数据也不可操作;
2.DockerFile添加数据卷
2.1 docker build 构建生成镜像文件
在宿主机/跟目录下,创建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
2.2 数据卷容器
#docker run -it --volume-from 容器id/name 镜像名称
docker run -it --volume-from 4d402bbe6e16 test/centos
不管数据卷容器通过--volume-from 容器id 继承多少次;这个数据卷里面的数据对所有的容器都是共享的;
更多推荐
所有评论(0)