当前位置:   article > 正文

docker(四):docker指定port运行、commit、数据卷(初解)、DockerFile_docker run port

docker run port

继: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打包镜像

  1. #格式:
  2. docker commit -a='打包者' -m='修改内容描述' 容器ID 命名空间/镜像名:tag
  3. 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参数,实现宿主机与容器间两个文件共享数据:

  1. docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
  2. 举例:
  3. docker run -it -v /dataVolumeHost:/dataVolumeContainer centos

上面截图中说错了一点,宿主机里面数据卷的文件是不会覆盖的;这就可以实现【宿主机一个目录与多个容器数据共享】

下面说明一下数据卷的体现:

 docker inspect  容器id  #查看容器详情点击:inspect,里面可以看到数据卷的信息;

数据卷效果举例:

  • 在dataVolumeHost上添加test001.txt  ————》dataVolumeContainer目录下有么?  有!
  • 在dataVolumeContainer上添加test002.txt  ————》dataVolumeHost目录下有么?  有!
  • 当容器关闭后(没有删除),宿主机对数据卷做得更改,在容器重启(注意:是重启容器,不是重新run镜像)后,是否更新?是!

可以看出上面的数据卷是有rw权限的;其实在运行的时候,可以指定只读(ro)权限;【ro:readonly】

  1. docker run -it -v /宿主机绝对目录:/容器内目录 镜像名
  2. 举例:
  3. docker run -it -v /dataVolumeHost:/dataVolumeContainer:ro centos

使用docker inspect 容器id  查看详情后(如下图);在容器中更改该目录数据也不可操作;

2.DockerFile添加数据卷

2.1 docker build 构建生成镜像文件

在宿主机/跟目录下,创建mydocker文件夹;在该文件夹下,创建Dockerfile文件;文件概要内容:

  1. #volume test
  2. FROM centos
  3. VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
  4. CMD echo "finished,————————————————————————————————————————》success1"
  5. CMD /bin/bash

可以看出,容器内有两个数据卷分别是dataVolumeContainer1、dataVolumeContainer2

使用 docker build 将上面的Dockerfile打包为镜像文件;

  1. docker build -f /mydocker/Dockfile -t test/centos .
  2. #注意最后有一个点;

运行上面的test/centos镜像实例化容器;在宿主机上:docker inspect 容器id

2.2 数据卷容器

  1. #docker run -it --volume-from 容器id/name 镜像名称
  2. docker run -it --volume-from 4d402bbe6e16 test/centos

不管数据卷容器通过--volume-from 容器id    继承多少次;这个数据卷里面的数据对所有的容器都是共享的;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/87654
推荐阅读
相关标签
  

闽ICP备14008679号