持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
Dockerfile
构建步骤:
1、编写一个 dockerfile 文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)
基础知识
1、每个保留关键字(指令)都必须是大写
2、执行从上到下顺序执行
3、#代表注释
4、每一个指令都会创建提交一个新的镜像层,并提交
Dockerfile指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 构建镜像的作者,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:tomcat镜像,这个tomncat压缩包,谭家内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 对外端口设置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被代替
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承 Dockerfile 这个时候就会运行 ONBUILD 的命令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置的环境变量
创建centos
FROM centos
MAINTAINER Sentiment<1509041516@qq.com>
ENV MYPATH /usr/local
WORKDIR MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo ---- end ----
CMD /bin/bash
CMD和ENTRPOINT区别
CMD测试
定义CMD后运行,直接输出了ls -a 的内容
若此时想追加l 即:ls -al,用cmd的方式只能替换:
docker run cmdtest ls -al
ENTRYPOINT测试
同理运行后执行ls -a
但此时若想 执行ls -al只需要在后边追加l即可:
docker run entrypoint-test -l
练习
dockerfile制作tomcat镜像
1、准备镜像文件tomcat压缩包和jdk压缩包
[root@VM-16-10-centos tomcat]# ls
apache-tomcat-9.0.65.tar.gz
jdk-8u65-linux-x64.tar.gz
2、编写dockerfile文件,官方命名问dockerfile,使用该命名后build时会自动寻找这个文件,不再需要加- f
FROM centos
MAINTAINER sentiment<1509041516@qq.com>
ADD jdk-8u65-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.65.tar.gz /usr/local/
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_65
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.65
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.65
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.65/bin/startup.sh &&tail -F /usr/local/apache-tomcat-9.0.65/bin/logs/catalina.out
3、构建镜像
docker build -t idytomcat
4、启动镜像
docker run -d -p 4000:8080 --name sentimenttomcat -v /dockerfile/tomcat/test:/usr/local/apache-tomcat-9.0.65/webapps/test -v /dockerfile/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.65/logs diytomcat
5、访问4000端口测试
6、发布项目,在test目录下创建index.jsp和WEB-INF文件夹以及对应的web.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
jsp
<html>
<head>
<title>Tomcat</title>
</head>
<body>
<h2>Hi,Sentiment!</h2>
</body>
</html>
此时访问test目录
发布镜像
docker login
输入账号密码后可以登录自己的dockerhub,之后就可以通过docker push命令 上传我们的镜像
docker push sentiment/diytomcat:1.0
The push refers to repository [docker.io/sentiment/diytomcat]
An image does not exist locally with the tag: sentiment/diytomcat
这里报错 tag有问题,所以尝试修改一下,修改后成功上传