【云原生】DockerFile学习总结

上一章我进行了数据卷的学习,这一章我就来总结对DockerFile的学习

DockerFile

  • DockerFile:构建文件,定义了镜像如何生成已经所需的文件等等配置。
  • DockerImages: 通过DockerFile层层生成的最终镜像。最终发布和运行的产品
  • DockerContainer: 容器是镜像运行起来的服务,也是一个可写层。

下面是我找的两幅docker常用命令的简介图。大家可以好好看看有对命令的详细介绍。
在这里插入图片描述
在这里插入图片描述

可以看到ENTRYPOINT和CMD的功能描述几乎是一样的,但是他们还是有区别的,CMD的命令是执行最后一个,ENTRYPOINT命令则是追加。
所以这里我就通过编写DockerFile来演示他们的区别。

[root@VM-0-3-centos ~]# cd dockerFile/
[root@VM-0-3-centos dockerFile]# vim docker-test-cmd
[root@VM-0-3-centos dockerFile]# cat docker-test-cmd 
FROM centos
CMD ["ls","-a"]

在这里插入图片描述
这样我们就创建好了一个dockerfile,很简单的一个dockerfile,这个的意思就是当我们运行这个镜像的时候自动ls -a。我们接下来用build命令来创建镜像。

docker build -f docker-test-cmd -t test01-cmd .
在这里插入图片描述
现在我们就创建好了。run一下试试。
在这里插入图片描述
现在我们在run命令后面加上一个 -l,理论上来说的话如果我们加上了一个-l那么这个镜像在run的时候执行的命令应该是ls -a -l 对吧,我们试试看。
在这里插入图片描述
可以看到报错了,这是为什么呢,因为前面说了CMD命令是只执行最后一项,所以当我们在run的时候加上命令-l的话实际镜像运行时执行的命令-l替换了ls -a,那么这时centos就无法识别-l是什么意思了。而ENTRYPOINT则是可以进行追加的,像这种情况entrypoint就可以运行命令为ls -a -l。这里就不对其再进行演示。

制作一个tomcat镜像

我们需要先去准备几个安装包,大家可以去官网上搜索,jdk下载tomcat下载
在这里插入图片描述
在这里插入图片描述

下载完用xftp上传上去就行。
在这里插入图片描述
接下来就可以编写Dockerfile文件了

FROM centos:centos7
MAINTAINER Aasee<xxx@qq.com>

COPY readme.txt /usr/local/readme.txt

#导入压缩包会自动解压
ADD apache-tomcat-9.0.63.tar.gz /usr/local/
ADD jdk-8u333-linux-x64.tar.gz /usr/local/

#安装vim
RUN yum -y install vim

#设置工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

#jdk环境配置
ENV JAVA_HOME /usr/local/jdk1.8.0_333
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#tomcat环境配置
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.63
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.63

#配置path环境
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#暴露端口
EXPOSE 8080

# 启动tomcat和打印日志
CMD /usr/local/apache-tomcat-9.0.63/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.63/logs/catalina.out

在这里插入图片描述

在这里插入图片描述

我这的命名为官方推荐名Dockerfile。所以不需要再用-f来指定文件。直接可以用docker build来创建
docker build -t 命名 .

在这里插入图片描述
在这里插入图片描述
接下来就可以run起来了

docker run -d -p 9090:8080 --name aaseetomcat -v /root/dockerFile/tomcat/test:/usr/local/apache-tomcat-9.0.63/webapps/test -v /root/dockerFile/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.63/logs aasee-tomcat01
这是我的命令你们也可以按自己需要改,相信看到这里,大部分命令大家都是能看懂的了。

在这里插入图片描述
可以看到运行成功并且也挂载成功了。访问页面看看
在这里插入图片描述
在这里插入图片描述
日志也能查看了。

再用docker inspect 容器id 来看看卷数据是否绑定成功

在这里插入图片描述

让我们看看tomcatlogs里的目录是否挂载成功。

在这里插入图片描述
可以看到已经成功了

接下来我们就给他新建一个自定义网页试试看。由于我们已经通过卷挂载了webapps/test,所以我们可以直接在宿主机的test目录下进行更改。同时也能反推看看两个目录是否卷挂载成功。

在这里插入图片描述
在这里插入图片描述

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
</web-app>

在这里插入图片描述
在这里插入图片描述

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello world</title>
  </head>
  <body bgcolor="F6F3D6">
    <!--用HTML语言向世界打声招呼吧!-->
    <h1 align="center">Hello World</h1>
    <p align="center">Aasee-Docker</p>
  </body>
</html>

接着我们去看看页面的效果吧
在这里插入图片描述

在这里插入图片描述
欧克了。

push到仓库保存

当我们做好镜像之后要怎么给别人使用呢,有两种方法一种是打包到本地然后发给别人,另一种是上传到docker官方仓库或者是阿里云,腾讯云等这些大厂的官方仓库。但是由于docker官方仓库节点在国外,速度时好时坏的,而且操作都差不多,这里就以阿里云为例子(腾讯云相同操作)。

首先先登录阿里云。
直接搜索容器镜像服务,我们个人测试使用就直接用个人版就行,然后根据提示创建命令空间再创建镜像仓库选择本地仓库之后就可以看到push的教程了。
在这里插入图片描述
这些内容就大家自己去看了。官方的命令很详细了。根据官方的命令我们就能很容易得将镜像推送到官方仓库。
在这里插入图片描述

补充

这里补充一下其他命令,例如docker history 镜像id这样就能看到这个镜像怎么生成的了
在这里插入图片描述

在这里插入图片描述
像这样👇
在这里插入图片描述

总结

到这里我们就基本能独立构建镜像并且使用镜像用来搭建发布项目了!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aasee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值