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命令
(完)