Docker(4)--镜像构建的具体操作方式(commit、Dockerfile)

1.通过commit构建镜像

1>运行容器

docker ps  #查看当前运行的容器
docker ps -a  #显示所有的容器
docker rm -f nginx  #删除容器nginx
docker rm -f game   #删除容器game
docker load -i rhel7.tar   #若本地有保存好的镜像,则可以直接导入
docker pull busybox   #若没有则需要进行拉取,拉取basybox镜像

在这里插入图片描述在这里插入图片描述
2>修改容器

docker history busybox:latest   #查看basybox在运行时需要执行什么操作,发现有CMD
CMD表示容器运行时会默认运行的操作
docker run -it busybox     #交互式运行
在容器内创建文件,ctrl+d退出,但此时容器已经停止
docker ps -a   #可以查看停止的容器

在这里插入图片描述

由于运行时没有进行容器的命名,因此在启动时需要使用随机生成的名称或者容器ID
docker start f25154ebb502       #启动容器
docker attach f25154ebb502    #连接容器
快捷键ctrl+p+q     #不退出,是容器在后台运行,不会停止

在这里插入图片描述3>将容器保存为新的镜像

保存时,即使容器停止也不影响保存,因为保存的是静态数据
测试时创建的文件是在容器的文件系统中,而不是保存在本地的文件系统中(当前本地文件系统为xhs)
若存储在本地的文件系统,效率较高,而容器层的文件系统的读写效率较差
若应用数据非常庞大,保存在容器的话会导致i镜像非常大,拉取时不方便,会浪费大量的磁盘空间和带宽空间
docker commit f25154ebb502 busybox:v1    #打包提交镜像名称为basybox:v1
docker history busybox
docker history busybox:v1
通过对比发现,v1版在原始的层上面又增加了新的一层,用来保存之前操作的痕迹,是一层一层向上叠加的方式
docker rm -f f25154ebb502      #正在运行的容器删除时,加-f强制,否则需要先停止容器
docker run -it --rm busybox:v1     #使用自己打包的镜像basybox:v1查看容器中的内容,并自动释放容器
发现原先在容器内保存的内容在镜像中存在

在这里插入图片描述在这里插入图片描述
在镜像中每一层都是通过commit打包提交而成

2.通过Dockerfile构建镜像

示例1:
1>删除前面构建的镜像和容器

docker rmi busybox:v1     #由于已经将上述实验所产生的容器删除,因此直接删除镜像即可(先删除容器再删除镜像)

在这里插入图片描述2>编写Dockerfile文件

mkdir docker/    #创建空目录
注意不要在根下创建,默认情况下构建时会将创建的目录下的所有数据发送到docker引擎
若在根下创建则会将根下的所有数据发送给docker引擎进行构建
vim Dockerfile   #编辑Dockerfile文件
FROM  #默认从哪个镜像开始
COPY  #拷贝文件,必须在当前目录

在这里插入图片描述
3>创建镜像demo:v1

docker build -t demo:v1 .    #创建镜像到当前,-t指定镜像名称,会默认从当前读取编写的Dockerfile文件并执行操作
docker images
docker history demo:v1 

通过此种方式,可以很清楚的知道在每一层都进行了哪些操作

在这里插入图片描述示例2:
1>编写Dockerfile文件

编辑内容为:
FROM busybox
COPY file1 /
RUN echo hello > file2   #默认会保存在根目录下

在这里插入图片描述
2>创建镜像demo:v2

docker build -t demo:v2 . 
docker history demo:v2
docker history demo:v1
发现v2是在v1的基础上进行构建, 相同的层进行共享

在这里插入图片描述示例3:
1>编写Dockerfile文件

编辑内容为:
FROM busybox
COPY file1 /
RUN echo hello > file2   
RUN echo westos > file3

在这里插入图片描述
2>创建镜像demo:v3

docker build -t demo:v3 . 
构建时发现相同的步骤都是使用cache,会加速构建过程
docker history demo:v3

在这里插入图片描述在容器中进行测试:

docker run -it --rm demo:v1  #使用容器demo:v1并自动释放
docker run -it --rm demo:v2
docker run -it --rm demo:v3

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值