标签:镜像文件 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
只返回镜像IDdocker images --help
可查看docker images的更多用法- 镜像文件存储在
/var/lib/docker/iamge
路径下,image id 是镜像的唯一标识
使用Dockerfile构建Tomcat镜像文件
Dockerfile 中的每条指令都会在镜像中创建一个层,当更改 Dockerfile 并重建映像时,只会重建那些已更改的层
- 准备centos7镜像文件(不用下载到本地,dockerfile文件中写了路径会自动去下载)
centos镜像文件通过docker pull daocloud.io/library/centos:latest
命令从国内的镜像仓库docker.daocloud.io获取,比docker的官方仓库地址快 - 准备 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
- 编写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"]
- 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
- 查看编译好的镜像文件
- 制作好的镜像文件启动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
- 验证制作的镜像是否可用
通过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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。