Docker之Dockerfle实战(一)
2023-04-18 14:50:59 时间
在前面的技术文章中介绍了Docker中镜像的管理和Docker容器的管理,本系列文章主要详细的介绍Dockerfile的案例应用和实战。 那么什么是Dockerfile?使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等等情况。
Dockerfile的作用
在docker中创建镜像可以分为两个方法,这两个方法具体可以总结为如下:
- 手动修改容器内容,然后docker commit提交容器为新的镜像文件
- 通过在dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依次添加层,最终生成一个新的镜像,这样就极大的简化了部署的工作。
Dockerfile组成部分
dockerfile的主要组成部分可以汇总为:
- 基础镜像信息
- 制作镜像操作指令 RUM
- 容器启动时执行指令CMD["/bin/bash"]
Dockerfile基本指令
dockerfile的指令主要可以汇总为如下,使用dockerfile的前提是学习会这些指令的基本使用,这些基本指令具体汇总如下:
- FROM #指令基础镜像
- MAINTAINER #指定维护者信息,也可以没有
- RUN #具体执行的操作,在命令前面加上RUN即可
- ADD #COPY文件,会自动进行解压
- WORKDIR #设置当前工作目录
- VOLUME #设置卷,挂载主机目录
- EXPOSE #指定对外的端口
- CMD #指定容器启动后需要干的事情
- COPY #复制文件
- ENV #环境变量
- ENIRYPOINT #容器启动后执行的命令
Dockerfile实战
容器能够运行的前提是必须在容器内,有一个进程在前台运行,该容器内,比如是MySQL,那么也就是说有MySQL正在前台运行。下面演示一个Linux中调用变量的案例应用,具体Dockerfile文件信息如下所示:
FROM centos:7.8.2003
MAINTAINER 无涯
ENV name Docker
ENTRYPOINT echo "Hello $name"
下面详细的演示构建Dockerfile的过程信息,构建的命令以及构建的过程具体如下:
#构建Dockerfile的镜像信息
docker build .
#执行如上构建的指令后,输出如下的信息
Sending build context to Docker daemon 15.87kB
Step 1/4 : FROM centos:7.8.2003
7.8.2003: Pulling from library/centos
9b4ebb48de8d: Pull complete
Digest: sha256:8540a199ad51c6b7b51492fa9fee27549fd11b3bb913e888ab2ccf77cbb72cc1
Status: Downloaded newer image for centos:7.8.2003
---> afb6fca791e0
Step 2/4 : MAINTAINER 无涯
---> Running in 2bfd2fad4751
Removing intermediate container 2bfd2fad4751
---> 71dad12c4110
Step 3/4 : ENV name Docker
---> Running in f70dc098790d
Removing intermediate container f70dc098790d
---> 3c5b5a752709
Step 4/4 : ENTRYPOINT echo "Hello $name"
---> Running in cf39ef605a9a
Removing intermediate container cf39ef605a9a
---> 2e70823e2d4a
Successfully built 2e70823e2d4a
构建镜像成功后,可以查看该镜像信息以及运行该容器,执行的结果就会显示“Hello Docker”,具体见如下的操作过程:
#查看镜像的信息
[root@wuyaShare learnDocker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 2e70823e2d4a 4 minutes ago 203MB
centos 7.8.2003 afb6fca791e0 17 months ago 203MB
#修改镜像的名称
[root@wuyaShare learnDocker]# docker tag 2e70823e2d4a centos_hello
#查看修改后的镜像名称
[root@wuyaShare learnDocker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_hello latest 2e70823e2d4a 5 minutes ago 203MB
centos 7.8.2003 afb6fca791e0 17 months ago 203MB
#运行镜像以及显示镜像运行后的信息
[root@wuyaShare learnDocker]# docker run -it --rm centos_hello bash
Hello Docker
如上可以看到,通过一个实际的案例演示了Dockerfile的实战应用,继续会陆续的完善通过Dockerfile来部署Python&Java的应用程序。感谢您的阅读,后续会持续的更新。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击