【Docker 】第 2 章

网友投稿 230 2022-10-18

【Docker 】第 2 章

​​镜像是什么​​​​分层理解​​​​commit 镜像​​​​容器数据卷​​

​​什么是容器数据卷​​​​命令​​​​具名和匿名挂载​​​​初始 Dockerfile​​

​​DockerFile​​

​​DockerFile 脚本构建构成​​

​​表示注释;​​

​​DockerFile 指令​​​​CMD 和 ENTRYPOINT 的区别​​

​​发布自己的镜像​​​​小结​​

可视化

portainerRancher

Docker 镜像是什么

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行库、环境变量和配置文件。

如何得到镜像:

从远程仓库下载;文件拷贝;自己制作 DockerFile

Docker 镜像加载原理

UnionFS(联合文件系统)

UnionFS 是一种分层、轻量级且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一虚拟文件系统下。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

docker 镜像实际上由一层一层的文件系统组成,这种层级的文件系统 UnionFS。

分层理解

分层下载,多个镜像共享某几个层;镜像都是只读的,当容器启动时,一个新的可写层(容器层)被加载到镜像的顶部,之下均是镜像层;​​inspect​​ 参数可以查看 layers(补丁);用户的所有操作都是基于容器层的;

commit 镜像

# 命令和git原理类似docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名[:TAG]

commit 能够保存当前容器的状态,类似于虚拟机中的“快照”功能;

容器数据卷

什么是容器数据卷

目的:解决Docker镜像中数据的保留问题,在删除镜像的同时保留数据; 方法:数据共享技术——卷技术,将容器中的目录挂载到linux上面;

命令

docker run -it -v /home/ceshi:/home centos /bin/bash # -v 本机目录:容器目录,inspect 参数中的"Mounts"可以查看source和destination

即使停止容器后,在容器中修改文件内容,再次启动容器后,仍然能够查看到内容更新。

具名和匿名挂载

# 如何确定是具名挂载还是匿名挂载,还是制定路径挂载?-v 容器内路径 # 匿名挂载-v 卷名:容器内路径 # 具名挂载-v /宿主机路径:容器内路径 # 指定路径挂载# ro :readonly 只能从宿主机改变# rw :readwritedocker run -d -P --name nginx02 -v jumping-nginx:/etc/nginx:ro nginx # -P 随机端口

初始 Dockerfile

Docker 就是用来构建 docker镜像的构建脚本。

# vim dockerfile1# 文件中的内容 指令(大写) 参数# 每一步对应层级的概念FROM centosCOLUME ["VOLUME01", "VOLUME02"] # 匿名挂载,使用 docker inspect Mounts 字段查看对应宿主机目录CMD echo "-------end-------"CMD /bin/bash

docker build -f dockerfile1 -t XXX:1.0 .

docker run -it --name docker03 --volumes-from docker01 kuangshen/centos:10.

DockerFile

编写一个 dockerfile 文件;docker build 构建为一个镜像;docker run 运行镜像;docker push 发布镜像(dockerhub、阿里云镜像仓库)

DockerFile 脚本构建构成

基础知识:

每个保留关键字(指令)都必须是大写字母;执行从上到下的顺序;

表示注释;

每一个指令都会创建提交一个镜像层;

dockerfile 是面向开发的,我们以后要发布项目,做镜像,就需要编写 dockerfile 文件,这个文件十分简单!

DockerFile 指令

FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像作者:姓名+邮箱RUN # 镜像构建的时候需要运行的命令ADD # 步骤,tomcat镜像的压缩包WORKDIR # 镜像的工作目录VOLUME # 挂载的目录EXPOST # 暴露端口配置CMD # 指定容器启动时候运行的命令,只有最后一个会生效,可被替代ENTRYPOINT # 指定容器启动时候运行的命令,可以追加命令ONBUILD # 当构建一个被继承Dockerfile这个时候就会运行ONBUILD指令,触发指令ENV # 构建的时候设置环境变量

CMD 和 ENTRYPOINT 的区别

发布自己的镜像

DockerHub

注册账号;在服务器上提交自己的镜像;

docker login -u usernamedocker push kuangshen/diytomcat:1.0

阿里云镜像 ​​https://aliyun.com/?utm_content=se_1009145079​​

小结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer之Java算法习题精讲二叉树的构造和遍历
下一篇:docker启动nginx
相关文章

 发表评论

暂时没有评论,来抢沙发吧~