Dockerfile构建镜像

Dockerfile镜像描述文件

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Docker通过读取Dockerfile中的命令自动生成镜像。

构建镜像命令:
docker build -t 机构/镜像名<:tags> Dockerfile目录

构建示例一:第一个Dockerfile

镜像描述:基于tomcat镜像,将docker-web发布至webapps目录下。

根据Dockerfile构建镜像

first-dockerfile目录结构:

|--first-dockerfile
  |--docker-web
    |--index.html
  |--Dockerfile

Dockerfile内容如下:

FROM tomcat:latest
MAINTAINER bigtree
WORKDIR /usr/bin/tomcat/webapps/
ADD docker-web ./docker-web

说明:
FROM 引入基础镜像
MAINTAINER 镜像维护者信息
WORKDIR 设置工作目录
ADD 拷贝文件或目录到容器中

Docker镜像构建命令:
docker build -t bigtree/mywebapp:1.0 .

D:\whw\study\docker\first-dockerfile>docker build -t bigtree/mywebapp:1.0 .
[+] Building 0.7s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                                 0.0s
 => => transferring dockerfile: 139B                                                                                 0.0s
 => [internal] load .dockerignore                                                                                    0.0s
 => => transferring context: 2B                                                                                      0.0s
 => [internal] load metadata for docker.io/library/tomcat:latest                                                     0.0s
 => [1/3] FROM docker.io/library/tomcat:latest                                                                       0.3s
 => [internal] load build context                                                                                    0.1s
 => => transferring context: 101B                                                                                    0.0s
 => [2/3] WORKDIR /usr/local/tomcat/webapps                                                                          0.1s
 => [3/3] ADD docker-web ./docker-web                                                                                0.1s
 => exporting to image                                                                                               0.1s
 => => exporting layers                                                                                              0.1s
 => => writing image sha256:79613e2b057df7ea44920d3364fc9697567541ad29f59f4ff74b82440b1c0af4                         0.0s
 => => naming to docker.io/bigtree/mywebapp:1.0                                                                      0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

D:\whw\study\docker\first-dockerfile>

查看构建的镜像:
docker images

D:\whw\study\docker\first-dockerfile>docker images
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
bigtree/mywebapp    1.0       79613e2b057d   2 minutes ago   475MB
docker101tutorial   latest    06e7d1edb551   4 hours ago     28.9MB
tomcat              latest    7a91e6f458bb   13 days ago     475MB
alpine/git          latest    692618a0d74d   2 weeks ago     43.4MB

如上所示,可看到新构建的镜像:bigtree/mywebapp,即表示镜像构建成功。

Dockerfile镜像验证

根据镜像创建容器并运行容器
docker run -d -p 8000:8080 bigtree/mywebapp:1.0

查看运行中的容器
docker ps

使用交互模式进入容器终端
docker exec -it 3247fb260a09 /bin/bash

进入对应的目录可看到发布的项目:docker-web

具体过程如下:

D:\whw\study\docker\first-dockerfile>docker images
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
bigtree/mywebapp    1.0       79613e2b057d   2 minutes ago   475MB
docker101tutorial   latest    06e7d1edb551   4 hours ago     28.9MB
tomcat              latest    7a91e6f458bb   13 days ago     475MB
alpine/git          latest    692618a0d74d   2 weeks ago     43.4MB

D:\whw\study\docker\first-dockerfile>

D:\whw\study\docker\first-dockerfile>docker run -d -p 8000:8080 bigtree/mywebapp:1.0
3247fb260a0999d7881a78ba2948b7199a08d5cfe1d810c7d0390061e26bd0f2

D:\whw\study\docker\first-dockerfile>
D:\whw\study\docker\first-dockerfile>
D:\whw\study\docker\first-dockerfile>docker ps
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS         PORTS                    NAMES
3247fb260a09   bigtree/mywebapp:1.0   "catalina.sh run"   10 seconds ago   Up 9 seconds   0.0.0.0:8000->8080/tcp   agitated_poitras

D:\whw\study\docker\first-dockerfile>
D:\whw\study\docker\first-dockerfile>docker exec -it 3247fb260a09 /bin/bash
root@3247fb260a09:/usr/local/tomcat/webapps# ls
docker-web
root@3247fb260a09:/usr/local/tomcat/webapps#

如上,我们第一个Dockerfile构建镜像即完成。

Dockerfile指令说明

FROM
构建镜像基于哪个镜像

MAINTAINER
镜像维护者信息

RUN
构建镜像时运行的指令

CMD
运行容器时执行的shell环境

VOLUME
指定容器挂载点到宿主机自动生成的目录或其他容器

USER
为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

WORKDIR
设置工作目录,就是切换目录

HEALTHCHECH
健康检查

ARG
构建时指定的一些参数

EXPOSE
声明容器的服务端口(仅仅是声明)

ENV
设置容器环境变量

ADD
拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压

COPY
拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

ENTRYPOINT
运行容器时执行的shell命令

(完)

最后修改于:2022年09月19日 00:57

添加新评论