ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker镜像基础&通过Dockerfile制作镜像

2021-07-02 18:01:04  阅读:165  来源: 互联网

标签:镜像文件 tomcat --- test 镜像 docker Dockerfile


docker镜像

docker三大基础组件

容器、镜像、仓库

  • 仓库是管理镜像的地方,可以拉取仓库中的镜像,也可以将制作好的镜像推送到仓库中;
  • 像则是根据我们需要的用途按照docker规则制作的docker应用;
  • 容器则是利用docker镜像启动的一个程序,一个镜像可以创建多个不同名字的容器。

docker镜像命令

  • docker history imagename 查看镜像的一共分了多少层
    查看centos镜像的分层
root@test:/home/test# docker history daocloud.io/library/centos
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
300e315adb2f        6 months ago        /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>           6 months ago        /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>           6 months ago        /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB

  • docker images 显示本地所有镜像
  • docker images -a显示本地所有镜像,包含中间映象层
  • docker images mysql查找本地mysql镜像文件
  • docker rmi mysql删除本地的mysql镜像文件
  • docker images -q只返回镜像ID
  • docker images --help 可查看docker images的更多用法
  • 镜像文件存储在/var/lib/docker/iamge路径下,image id 是镜像的唯一标识

使用Dockerfile构建Tomcat镜像文件

Dockerfile 中的每条指令都会在镜像中创建一个层,当更改 Dockerfile 并重建映像时,只会重建那些已更改的层

  1. 准备centos7镜像文件(不用下载到本地,dockerfile文件中写了路径会自动去下载)
    centos镜像文件通过docker pull daocloud.io/library/centos:latest命令从国内的镜像仓库docker.daocloud.io获取,比docker的官方仓库地址快
  2. 准备 tomcat和jdk安装包
root@test:/home/test# ll
总用量 153100
-rw-r--r-- 1 zhujunhan docker  11834793 7月   1 16:20 apache-tomcat-10.0.7.tar.gz
-rw-r--r-- 1 zhujunhan docker 144935989 7月   1 16:45 jdk-8u291-linux-x64.tar.gz
  1. 编写Dockerfile文件,如图
FROM daocloud.io/library/centos
MAINTAINER ZD

ADD jdk-8u291-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_291

ADD apache-tomcat-10.0.7.tar.gz /usr/local

RUN rm -f /usr/local/*.tar.gz

WORKDIR /usr/local/apache-tomcat-10.0.7
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh","run"]
  1. docker build命令编译Dockerfile文件
  • docker build -t tomcat:v10.0.7 .( 最后一个点表示文件路径)执行命令后生成镜像文件成功
root@test:/home/test# docker build -t tomcat:v10.0.7 .
Sending build context to Docker daemon  533.6MB
Step 1/9 : FROM daocloud.io/library/centos
 ---> 300e315adb2f
Step 2/9 : MAINTAINER ZD
 ---> Using cache
 ---> 0bc23876502e
Step 3/9 : ADD jdk-8u291-linux-x64.tar.gz /usr/local
 ---> Using cache
 ---> d51c7dffbc1d
Step 4/9 : ENV JAVA_HOME /usr/local/jdk1.8.0_291
 ---> Using cache
 ---> c99e3768c946
Step 5/9 : ADD apache-tomcat-10.0.7.tar.gz /usr/local
 ---> Using cache
 ---> 3a7f473170ca
Step 6/9 : RUN rm -f /usr/local/*.tar.gz
 ---> Using cache
 ---> 90c3259eee5a
Step 7/9 : WORKDIR /usr/local/apache-tomcat-10.0.7
 ---> Using cache
 ---> 9f498429795c
Step 8/9 : EXPOSE 8080
 ---> Using cache
 ---> 8c5c22e0e5ec
Step 9/9 : ENTRYPOINT ["./bin/catalina.sh","run"]
 ---> Using cache
 ---> 60243da1ed7e
Successfully built 60243da1ed7e
Successfully tagged tomcat:v10.0.7

  • docker build -t tomcat:v10.0.7 -f Dockerfile /home/test :文件路径在/home/test下和dockerfile(在/home目录下)不在同一个路径下时,单独指明dockerfile文件路径
    docker build相关命令更多查看docker build --help
  1. 查看编译好的镜像文件
    在这里插入图片描述
  2. 制作好的镜像文件启动docker应用
  • 如下执行命令后,启动容器成功(-d参数表示后台运行,,-p指定映射的端口,详见更多容器相关命令
  • 通过docker ps可以看到运行的容器
  • 通过netstat -ntlp|grep 8080可以看到服务器的8080端口已被docker应用占用
root@test:/home# docker run -d -p 8080:8080 tomcat:v10.0.7
2216733dba525101caa36ae5d48afe5cc2e829361b5822c092c5fe48fa666c64
root@test:/home# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
2216733dba52        tomcat:v10.0.7      "./bin/catalina.sh r…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   goofy_minsky
root@test:/home# netstat -ntlp|grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      14094/docker-proxy
  1. 验证制作的镜像是否可用
    通过ip地址+端口访问tomcat,可以访问则表示成功
    在这里插入图片描述

Dockerfile文件中配置项说明

  • FORM 构建的基础镜像
  • MAINTAINER镜像创建者
  • ENV设置环境变量
  • COPY将编译机本地文件考本到镜像文件系统中
  • EXPOSE指定docker容器中监听的端口
  • ADD 拷贝文件或目录到镜像,URL地址或者压缩包会自动下载或解压(和copy相同类似,但是copy命令对于压缩包不会进行解压,只会拷贝压缩包的名字)
  • RUN 容器创建的时候执行的命令
  • WORKDIR 设置进入容器时的路径
  • ENTRYPOINT使用此镜像文件创建容器时才会执行的命令
  • CMD一般情况下和entrypoint作用等同,但cmd里写的参数时可变的(docker run运行容器如果带了参数会覆盖cmd中的参数),而entrypoint的则不会,所以针对可变参数一般写在cmd里,不可变的写在entrypoint里

entrypoint和cmd两者使用格式:

CMD command param
CMD ["<executeable>","<param1>","<param2>",...]
CMD ["<param1>","<param2>",...]该写法是为 ENTRYPOINT 指令指定的程序提供默认参数;
ENTRYPOINT <command>
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

标签:镜像文件,tomcat,---,test,镜像,docker,Dockerfile
来源: https://blog.csdn.net/z917185537/article/details/117828186

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有