【长篇博文】Docker学习笔记(四):镜像的分层、打包、双向绑定、导入导出、Dockerfile的构建、部署与发布

本文详细介绍了Docker的镜像分层原理,包括联合文件系统、镜像加载和拉取,以tomcat为例进行案例分析。探讨了如何提交自己的镜像,并通过实战演示了容器数据卷的双向绑定。进一步讲解了Dockerfile的构建,包括创建、命令和实战测试,以及如何构建tensorflow环境。最后提到了镜像和容器的打包与导入流程。
摘要由CSDN通过智能技术生成

这里推荐B站狂神的教学视频,视频的地址附录在文章末尾,个人觉得还是讲得不错的。以下的一些学习记录参看了该视频,希望对大家有帮助。

一、镜像分层的理解

在这里插入图片描述
例如下载一层一层的:
在这里插入图片描述

1.0、联合文件

以前下载过的可不再下载,共用就行,极大节省了空间。
在这里插入图片描述

1.1、加载镜像

如何进行加载镜像?
在这里插入图片描述
加载引导类似我们ubuntu里面的boot,无论什么镜像,bootfs都是共用的
在这里插入图片描述
例如启动后,root文件下进行一个容器作为小的虚拟机。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2、分层拉取镜像

可以发现,已有的层就不在重复拉取,因此显示存在(already exists)
在这里插入图片描述
我们可以通过前面说的inspect查询镜像信息,然后来查看层layers
在这里插入图片描述
创建新的层会在层的基础上继续添加就可以。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3、案例分析:tomcat

在这里插入图片描述
在这里插入图片描述

二、提交自己的镜像

如何提交自己的镜像?

2.1、提交自己的镜像

在这里插入图片描述

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

2.2、实战测试

运行tomcat 镜像 :又看到熟悉的猫,docker安装运行完成:

 docker run -it --rm -p 8989:8080 tomcat

具体看下面的命令解释

root@ovo:/home/zkpark# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS                              PORTS                              NAMES
b9fa71eb085d   tomcat           "catalina.sh run"        58 seconds ago   Up 57 seconds                       8080/tcp, 0.0.0.0:8989->8989/tcp   vigilant_beaver
87e59469fb99   rancher/server   "/usr/bin/entry /usr…"   21 hours ago     Up 14 hours                         3306/tcp, 0.0.0.0:9090->8080/tcp   rancher-zk
964fd0b86e14   e02481bb39c8     "entrypoint.sh"          23 hours ago     Restarting (1) About a minute ago                                      blissful_mclean
#运行tomcat容器
root@ovo:/home/zkpark# docker exec -it b9fa71eb085d /bin/bash
root@b9fa71eb085d:/usr/local/tomcat# cd webapps
#目前没有任何东西,所以要从webapps.dist拷贝
root@b9fa71eb085d:/usr/local/tomcat/webapps# ls
root@b9fa71eb085d:/usr/local/tomcat/webapps# cd ..
#拷贝
root@b9fa71eb085d:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@b9fa71eb085d:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
#进入webapps查看是否拷贝成功
root@b9fa71eb085d:/usr/local/tomcat# cd webapps
root@b9fa71eb085d:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@b9fa71eb085d:/usr/local/tomcat/webapps# cd 
root@b9fa71eb085d:~# exit
exit
#查看当前tomcat进程
root@ovo:/home/zkpark# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS                          PORTS                              NAMES
b9fa71eb085d   tomcat           "catalina.sh run"        6 minutes ago   Up 6 minutes                    8080/tcp, 0.0.0.0:8989->8989/tcp   vigilant_beaver
87e59469fb99   rancher/server   "/usr/bin/entry /usr…"   21 hours ago    Up 14 hours                     3306/tcp, 0.0.0.0:9090->8080/tcp   rancher-zk
964fd0b86e14   e02481bb39c8     "entrypoint.sh"          23 hours ago    Restarting (1) 43 seconds ago  

提交新的tomcat:

docker commit -a"zk" -m="add webapps app" 606e2ead236d tomcat_2021:zk1.0

可以发现刚刚新建提交的tomcat_2021镜像
在这里插入图片描述
在这里插入图片描述

三、容器数据卷

3.0、问题描述与需求分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1、双向绑定指定目录流程

挂载到主机与docker容器内的相同目录,事实上就是一种双向绑定的操作。
在这里插入图片描述
在这里插入图片描述

3.2、双向绑定实战测试

3.2.1、挂载流程

首先主机cd到 home该目录下:

root@ovo:/home/zkpark# cd /home
root@ovo:/home# ls
lost+found  ovo.py  zkpark  zkpy

然后开始进行绑定操作:这个命令执行后直接进入了centos镜像的容器下:

docker run -it -v /home/ceshi:/home centos

ls查看当前目录文件

root@ovo:/home# docker run -it -v /home/ceshi:/home centos /bin/bash
[root@508e05fae9c2 /]# ls 
bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

进入该容器的home目录,让它与ubuntu主机下的home保持一样。可以发现。当前目录下没有任何文件:

[root@508e05fae9c2 /]# cd /home
[root@508e05fae9c2 home]# ls
[root@508e05fae9c2 home]# 

下面我们来docker inspect 508e05fae9c2查看一下该容器的挂载信息,挂载的内容在mounts下,记得另起一个终端,在root下查看:

root@ovo:/home/zkpark# docker inspect 508e05fae9c2

找到mounts,如下图所示,说明挂载成功!
在这里插入图片描述

3.2.1、绑定:从centos生成的文件同步到主机ubuntu的文件

下面在容器的home下创建一个文件,并查看:

[root@508e05fae9c2 home]# touch sinxzy.py
[root@508e05fae9c2 home]# ls
sinxzy.py

接下来去我们的主机的home的ceshi目录下查看是不是有该文件的生成:

root@ovo:/home# ls
ceshi  lost+found  ovo.py  zkpark  zkpy
root@ovo:/home
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值