https://www.bilibili.com/video/BV1og4y1q7M4?p=8&spm_id_from=pageDriver
文章目录
- 可视化
- Docker 镜像是什么
- 分层理解
- commit 镜像
- 容器数据卷
- 什么是容器数据卷
- 命令
- 具名和匿名挂载
- 初始 Dockerfile
- DockerFile
- DockerFile 脚本构建构成
- 表示注释;
- DockerFile 指令
- CMD 和 ENTRYPOINT 的区别
- 发布自己的镜像
- 小结
可视化
- portainer
- Rancher
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 :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 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 username
docker push kuangshen/diytomcat:1.0
阿里云镜像
https://www.aliyun.com/?utm_content=se_1009145079
小结