0
点赞
收藏
分享

微信扫一扫

【Docker 】第 2 章

墨春 2022-06-21 阅读 62

​​https://www.bilibili.com/video/BV1og4y1q7M4?p=8&spm_id_from=pageDriver​​


文章目录

  • ​​可视化​​
  • ​​Docker 镜像是什么​​
  • ​​分层理解​​
  • ​​commit 镜像​​
  • ​​容器数据卷​​
  • ​​什么是容器数据卷​​
  • ​​命令​​
  • ​​具名和匿名挂载​​
  • ​​初始 Dockerfile​​
  • ​​DockerFile​​
  • ​​DockerFile 脚本构建构成​​

  • ​​表示注释;​​
  • ​​DockerFile 指令​​
  • ​​CMD 和 ENTRYPOINT 的区别​​
  • ​​发布自己的镜像​​
  • ​​小结​​

可视化

  • portainer
  • Rancher

Docker 镜像是什么

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

如何得到镜像:

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

Docker 镜像加载原理

UnionFS(联合文件系统)

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

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

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

分层理解

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

commit 镜像

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

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

容器数据卷

什么是容器数据卷

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

【Docker 】第 2 章_文件系统

命令

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

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

具名和匿名挂载

# 如何确定是具名挂载还是匿名挂载,还是制定路径挂载?
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载

# ro :readonly 只能从宿主机改变
# rw :readwrite
docker run -d -P --name nginx02 -v jumping-nginx:/etc/nginx:ro nginx # -P 随机端口

初始 Dockerfile

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

# vim dockerfile1
# 文件中的内容 指令(大写) 参数
# 每一步对应层级的概念
FROM centos

COLUME ["VOLUME01", "VOLUME02"] # 匿名挂载,使用 docker inspect Mounts 字段查看对应宿主机目录

CMD echo "-------end-------"
CMD /bin/bash
docker build -f dockerfile1 -t XXX:1.0 .

【Docker 】第 2 章_数据_02

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

实现容器间的数据共享。
【Docker 】第 2 章_docker_03
只要有容器仍然再用数据文件,当容器被删除时,数据文件不会丢失。

DockerFile

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

【Docker 】第 2 章_docker_04
【Docker 】第 2 章_数据_05
【Docker 】第 2 章_数据_06
很多官方镜像只提供最基本的功能。

DockerFile 脚本构建构成

基础知识:

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

表示注释;

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

【Docker 】第 2 章_数据_07

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

DockerFile 指令

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

【Docker 】第 2 章_文件系统_08

【Docker 】第 2 章_数据_09

【Docker 】第 2 章_docker_10

CMD 和 ENTRYPOINT 的区别

【Docker 】第 2 章_文件系统_11
【Docker 】第 2 章_docker_12
【Docker 】第 2 章_docker_13

发布自己的镜像

DockerHub

  1. 注册账号;
  2. 在服务器上提交自己的镜像;
docker login -u username
docker push kuangshen/diytomcat:1.0

阿里云镜像

​​https://www.aliyun.com/?utm_content=se_1009145079​​

小结

【Docker 】第 2 章_docker_14


举报

相关推荐

0 条评论