zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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的应用程序。感谢您的阅读,后续会持续的更新。