0


三天入门 Docker - 第二天:Dockerfile 基本介绍与使用

Dockerfile 基本介绍与使用

前言

在日常工作中,大家应该都或多或少的使用过很多镜像,但是不知道大家在使用的时候,有没有想过我们使用的镜像,是如何生成的,以及镜像里面的环境信息等。其实啊,不管是在哪拉取的镜像,这些镜像都是由 Dockerfile 提前构建好的,并且镜像里面的一些环境信息都是由镜像作者自己配置的。所以说在有些情况下,我们自己使用 Dockerfile 来构建的镜像,效果可能更好。

一、Dockerfile 介绍

Dockerfile 是由一组指令组成的文件,其中每条指令对应 Linux 中的一条命令,并且支持以

#

开头的注释行;一般来说,Dockerfile 结构大致分为四个部分:基础镜像、维护者信息、镜像操作指令和容器启动时的运行命令。 Dockerfile 官方介绍

我们前面说的 Docker 是由一系列的层组成,这里的层,就是我们 Dockerfile 文件中运行的指令,每条指令相当于说都是一个层,并且会进行累加,也就是说,当我们运行的指令过多时,生成出来的镜像便会很大。


Dockerfile 常见的操作指令:
指令作用

FROM

用来指定基础镜像(即,我们使用什么镜像来制作新的镜像)

MAINTAINER

说明制作镜像的作者信息

RUN

我们在要基础镜像上运行的命令

EXPORT

给我们制作的镜像开放需要的端口

ADD

可以将宿主机中的 文件/目录 传送到镜像中(当传送的为

tar

包时,会自动进行解压)

COPY

可以将宿主机中的 文件/目录 传送到镜像中(文件/目录 需要和 Dockerfile 位于相同目录)

WORKDIR

指定工作目录

ENV

给容器配置环境变量

VOLUME

给容器创建一个挂载点

USER

可以指定容器的运行用户

CMD

容器启动时要运行的命令或脚本(当有多条 CMD 命令时,最后一条生效)

二、使用 Dockerfile 实现自建镜像

准备工作:
主机名操作系统IP 地址DockerCentOS

7.x

192.168.1.4

  • 这里博主直接使用的是前面文章中的 Docker 环境:传送门

1.自建 Nginx 镜像

1)编写 Dockerfile 文件

[root@Docker ~]#mkdirnginx[root@Docker ~]#cdnginx/[root@Docker nginx]#wgethttp://nginx.org/download/nginx-1.18.0.tar.gz[root@Docker nginx]#vimDockerfile#配置基础镜像FROMdadoha/centos7.4.1708#配置作者信息MAINTAINER[河北彭于晏]#安装相关软件包RUNyumcleanall&&yum-yinstallproc-develnet-toolsgcczlibzlib-develmakeopenssl-develwget#将Nginx软件包传到容器中ADDnginx-1.18.0.tar.gz/usr/src/#配置工作目录WORKDIR/usr/src/nginx-1.18.0/#进行编译安装RUN./configure--prefix=/usr/local/nginx&&make&&makeinstall#开启端口EXPOSE80443#修改Nginx配置文件.以非Daemon(后台)方式启动RUNecho"daemon off;">>/usr/local/nginx/conf/nginx.conf#复制启动脚本COPYrun.sh/RUNchmod755/run.sh#运行启动脚本CMD["/run.sh"]

2)配置启动脚本

[root@Docker nginx]#cat<<END>run.sh#!/bin/bash/usr/local/nginx/sbin/nginxEND

3)生成镜像

[root@Docker nginx]#dockerbuild-tnginx:1.18.

4)启动容器并验证

[root@Docker nginx]#dockerimages|grep1.18[root@Docker nginx]#dockerrun-d--nameNginx-p31888:80nginx:1.18

在这里插入图片描述

2.自建 Tomcat 镜像

1)下载相关软件包

[root@Docker ~]#mkdirtomcat[root@Docker ~]#cdtomcat[root@Docker tomcat]#lsapache-tomcat-8.5.32.tar.gzjdk-8u181-linux-x64.tar.gz

2)编写 Dockerfile 文件

[root@Docker tomcat]#vimDockerfileFROMdadoha/centos7.4.1708MAINTAINER[河北彭于晏]ADDjdk-8u181-linux-x64.tar.gz/usr/local/ENVJAVA_HOME/usr/local/jdk1.8.0_181ENVPATH$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/binENVCLASSPATH$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jarADDapache-tomcat-8.5.32.tar.gz/usr/local/EXPOSE8080ADDrun.sh/RUNchmod755/run.shCMD["/run.sh"]

3)配置启动脚本

[root@Docker tomcat]#cat<<END>run.sh#!/bin/bash/usr/local/apache-tomcat-8.5.32/bin/startup.shtailf/runEND

4)生成镜像

[root@Docker tomcat]#dockerbuild-ttomcat:8.5.32.

5)启动容器并验证

[root@Docker tomcat]#dockerrun-d--nametomcat-p8888:8080tomcat:8.5.32

在这里插入图片描述

标签: docker 容器 linux

本文转载自: https://blog.csdn.net/weixin_46902396/article/details/122467510
版权归原作者 愿许浪尽天涯 所有, 如有侵权,请联系我们删除。

“三天入门 Docker - 第二天:Dockerfile 基本介绍与使用”的评论:

还没有评论