博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker(7)---自定义镜像并设置镜像挂载
阅读量:3948 次
发布时间:2019-05-24

本文共 4724 字,大约阅读时间需要 15 分钟。

在这里插入图片描述

上一篇:

使用dockerfile自定义镜像文件最好配合查看保留字指令;

  或者直接看下图:

在这里插入图片描述

  以构建一个自己的centos镜像包为例:

#分别执行以下命令:cd /homemkdir docker_volumevi dockerfile

然后在 dockerfile中输入以下命令

#设置基础镜像FROM centos#设置镜像包作者和邮箱MAINTAINER magic<304897438@qq.com>#设置环境变量(MYPATH是自定义的一个名字,有点像key:value结构中的key值) ENV MYPATH /usr/local#设置工作空间;使用$符号获取到MYPATH对应的地址(即/usr/local),进入该镜像容器中的时候就会到/ur/local目录下WORKDIR $MYPATH#RUN:容器构建时需要执行的命令,这里使用yum方式下载 vim ,net-tools等常用指令库RUN yum -y install vimRUN yum -y install net-tools#暴露端口EXPORE 80#容器启动的时候需要执行的命令CMD echo $MYPATHCMD echo "-------------build end----------------"CMD /bin/bash

然后再进行镜像构建:

[root@iZ2zearkb2a36wkifspfmkZ docker_volume]# docker build -f dockerfile -t mycentos:1.0 .

使用docker images命令查看新构建的镜像:mycentos:1.0

[root@privateCloud /home/docker_volume ]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEmycentos            1.0                 8a4517a9ef80        5 seconds ago       237MBtomcat              latest              1b6b1fe7261e        2 weeks ago         647MBnginx               latest              9beeba249f3e        2 weeks ago         127MBmysql               latest              a0d4d95e478f        2 weeks ago         541MBelasticsearch       7.6.2               f29a1ee41030        2 months ago        791MBcentos              latest              470671670cac        4 months ago        237MB

启动自定义的centos镜像:

[root@privateCloud /home/docker_volume ]# docker run -it 8a4517a9ef80

发现在自定义的centos镜像的根目录中(输入:“cd / ” 命令可以查看到这两个文件)多了两个文件:volume01volume02,这是在自定义的dockerfile中设置的数据挂载文件;

在这里插入图片描述
退出mycentos01镜像容器:ctrl+p+(容器不停止退出)

因为前面的dockerfile中设置挂载文件的时候是匿名挂载(随着容器建立而建立,随着容器消亡而消亡,所以只存储无关痛痒的数据)

查看mycentos01镜像容器的挂载设置:

[root@privateCloud /home/docker_volume ]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMESc604dcc93dc6        8a4517a9ef80        "/bin/sh -c /bin/bash"   4 minutes ago       Up 4 minutes                            gallant_carson[root@privateCloud /home/docker_volume ]# docker inspect 8a4517a9ef80

然后找到Mounts信息

"Mounts": [            {
"Type": "volume", "Name": "d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6", "Source": "/var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data", "Destination": "volume01", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, {
"Type": "volume", "Name": "8e9b32abcb82abd7602a02e3c08ac159384e5fdfef38f0bebcb5b1799af8067a", "Source": "/var/lib/docker/volumes/8e9b32abcb82abd7602a02e3c08ac159384e5fdfef38f0bebcb5b1799af8067a/_data", "Destination": "volume02", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],

从以上这段信息中可以看到与volume01进行数据共享的是/var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data文件,与volume02进行数据共享的是/var/lib/docker/volumes/8e9b32abcb82abd7602a02e3c08ac159384e5fdfef38f0bebcb5b1799af8067a/_data文件。可以通过小测试进行验证:

在宿主机中的/var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data目录中创建一个新的文本文件:

[root@privateCloud /home/docker_volume ]# cd /var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data[root@privateCloud /var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data ]# touch file01.txt[root@privateCloud /var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data ]# lltotal 0-rw-r--r-- 1 root root 0 Jun  1 11:26 file01.txt[root@privateCloud /var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data ]#

然后再进入mycentos容器:

[root@privateCloud / ]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES3476abbbc14a        9bbf7f944441        "/bin/bash"         45 minutes ago      Up 45 minutes                           naughty_wilson[root@privateCloud / ]# [root@privateCloud / ]# [root@privateCloud / ]# docker exec -it 3476abbbc14a /bin/bash[root@3476abbbc14a /]# lsbin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01	volume02[root@3476abbbc14a /]# cd volume01[root@3476abbbc14a volume01]# lsfile01.txt[root@3476abbbc14a volume01]#

发现容器内的volume01文件夹中也有file01文件,说明之前在宿主机的/var/lib/docker/volumes/d1b800a2c4c72dedfb30d70453e74a4263bf6fe8086d9b26c3b3e979f5fcf8d6/_data中创建的文件与容器数据共享成功。

转载地址:http://cphwi.baihongyu.com/

你可能感兴趣的文章
android如何使得电阻屏在第一次开机时自动叫起屏幕校准程序
查看>>
android如何实现:当开启图案解锁时,取消滑动解锁
查看>>
Providing Ancestral and Temporal Navigation 设计高效的应用导航
查看>>
Putting it All Together: Wireframing the Example App 把APP例子用线框图圈起来
查看>>
Implementing Lateral Navigation 实现横向导航
查看>>
Implementing Ancestral Navigation 实现原始导航
查看>>
Implementing Temporal Navigation 实现时间导航
查看>>
Responding to Touch Events 响应触摸事件
查看>>
Defining and Launching the Query 定义和启动查询
查看>>
Handling the Results 处理结果
查看>>
如何内置iperf到手机中
查看>>
如何adb shell进入ctia模式
查看>>
Contacts Provider 联系人存储
查看>>
android 图库播放幻灯片时灭屏再亮屏显示keyguard
查看>>
android 图库语言更新
查看>>
android camera拍照/录像后查看图片/视频并删除所有内容后自动回到camera预览界面
查看>>
android 图库中对非mp4格式的视频去掉"修剪"功能选项
查看>>
how to disable watchdog
查看>>
android SDIO error导致wifi无法打开或者连接热点异常的问题
查看>>
android USB如何修改Serial Number or SN?
查看>>