热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:dockerdockerFile总结

篇首语:本文由编程笔记#小编为大家整理,主要介绍了docker-dockerFile总结相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了docker -dockerFile总结相关的知识,希望对你有一定的参考价值。






DockerFile介绍

dockerfile是用来构建docker镜像的文件!命令参数脚本!

构建步骤:


  • 编写一个dockerfile文件
  • docker build 构建称为一个镜像
  • docker run运行镜像
  • docker push发布镜像(DockerHub 、阿里云仓库)

DockerFile构建过程

基础知识:


  • 每个保留关键字(指令)都必须是大写字母
  • 执行从上到下顺序执行
  • /# 表示注释
  • 每一个指令都会创建提交一个新的镜像层,并提交!

步骤:开发,部署,运维


  • DockerFile : 构建文件,定义了一切的步骤,源代码

  • DockerImages : 通过DokerFile构建生成的镜像,是最终发布和运行的产品

  • Docker容器:容器就是镜像运行起来提供服务器


1、DockerFile的指令

FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!

2、案例

创建自己的镜像实例

# 1.编写Dockerfile的文件
FROM centos
MAINTAINER dainel<dlgnjupt&#64;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
# 2.通过这个文件构建镜像
# 命令 docker build -f 文件路径 -t 镜像名:[tag] .
docker build -f mydockerfile-centos -t mycentos:0.1 .
Successfully built 4af56313b71a
Successfully tagged mycentos:0.1
# 3.测试运行

CMD 和 ENTRYPOINT区别


测试cmd

# 编写dockerfile文件
vim dockerfile-test-cmd
FROM centos
CMD ["ls","-a"]
# 构建镜像
docker build -f dockerfile-cmd-test -t cmdtest .
# 运行镜像
docker run f6a946a8a24e

# 想追加一个命令 -l 成为ls -al
docker run f6a946a8a24e -l #报错&#xff0c;不能追加命令
# cmd的情况下 -l 替换了CMD["ls","-l"]。 -l 不是命令所有报错

测试ENTRYPOINT

# 编写dockerfile文件
vim dockerfile-test-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
# 构建镜像
docker build -f dockerfile-cmd-entrypoint -t entrypoint .
# 运行镜像
docker run a8dedd41d3d0

# 想追加一个命令 -l 成为ls -al
docker run a8dedd41d3d0 -l
#追加成功&#xff0c;是直接拼接在我们得ENTRYPOINT命令后面的

3、案例tomcat镜像

准备镜像文件 tomcat压缩包&#xff0c;jdk压缩包

root&#64;vm:/home/whq/build/tomcat# ls
apache-tomcat-10.0.4.tar.gz jdk-8u291-linux-x64.tar.gz readme.txt

编写dockerfile文件&#xff0c;官方命名Dockerfile&#xff0c;build会自动寻找这个文件&#xff0c;就不需要-f指定了&#xff01;

vim Dockerfile
##内容
FROM centos
MAINTAINER whq<ahuwhq&#64;163.com>
COPY readme.txt /usr/local/readme.txt #复制文件
ADD jdk-8u291-linux-x64.tar.gz /usr/local#复制解压
ADD apache-tomcat-10.0.4.tar.gz /usr/local#复制解压
RUN yum -y install vim
ENV MYPATH /usr/local #设置环境变量
WORKDIR $MYPATH#设置工作目录
ENV JAVA_HOME /usr/local/jdk1.8.0_11#设置环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#设置环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.4
ENV CATALINA_BASH /usr/local/apache-tomcat-10.0.4
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#设置环境变量 分隔符是&#xff1a;
EXPOSE 8080 #设置暴露的端口
CMD /usr/local/apache-tomcat-10.0.4/bin/startup.sh && tail -F /usr/local/apache-tomcat-10.0.4/bin/logs/catalina.out# 设置默认命令

FROM centos
MAINTAINER whq<ahuwhq&#64;163.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u291-linux-x64.tar.gz /usr/local
ADD apache-tomcat-10.0.4.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_291
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.4
ENV CATALINA_BASH /usr/local/apache-tomcat-10.0.4
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-10.0.4/bin/startup.sh && tail -F /usr/local/apache-tomcat-10.0.4/bin/logs/catalina.out

#构建镜像
# 因为dockerfile命名使用默认命名 因此不用使用-f 指定文件
docker build -t diytomcat .

#启动镜像
docker run -d -p 9099:8080 --name ahuwhq01tomcat -v /home/whq/build/tomcat/test:/usr/local/apache-tomcat-10.0.4/webapps/test -v /home/whq/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-10.0.4/logs diytomcat

访问测试

一些出错的点


  • curl: (7) Failed to connect to localhost port 8080: Connection refused

这里发现使用curl localhost:9099 和容器外部使用curl localhost:8080访问不了


解决方法&#xff1a;

1、查看java -version 如果是openjdk请卸载干净
sudo apt-get remove openjdk*
source /etc/profile
2、对应查看安装java8
java -version
3、查看Dockerfile文件的环境变量
首先进入容器ls查看jdk1.8.0_291&#xff0c;则将ENV JAVA_HOME /usr/local/jdk1.8.0_291
修改文件。
4、卸载容器镜像&#xff0c;然后在重新安装一遍就可以解决了。
此时在外网就可以访问apache了。

发布项目

# 进入test文件夹创建WEB-INF
cd test/
mkdir WEB-INF
cd WEB-INF/
#创建web.xml文件
vim web.xml
#web.xml内容
<?xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<web-app xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance" xmlns&#61;"http://java.sun.com/xml/ns/javaee" xmlns:web&#61;"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation&#61;"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id&#61;"WebApp_ID" version&#61;"2.5">
</web-app>
#回到test目录
cd ..
#创建index.jsp文件
vim index.jsp
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8"
pageEncoding&#61;"UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset&#61;"utf-8">
<title>hello !</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的项目部署成功 ");
%>
</body>
</html>

在这里插入图片描述
ip:9099/test
在这里插入图片描述
产看日志&#xff1a;

cd ../tomcatlogs/
ls
cat catalina.out

在这里插入图片描述
发现&#xff1a;项目部署成功&#xff0c;可以直接访问&#xff01;


发布自己的镜像Dockerhub

1、地址 https://hub.docker.com/

2、确定这个账号可以登录

3、登录

$ docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username

4、提交 push镜像

# 会发现push不上去&#xff0c;因为如果没有前缀的话默认是push到 官方的library
# 解决方法
# 第一种 build的时候添加你的dockerhub用户名&#xff0c;然后在push就可以放到自己的仓库了
$ docker build -t chengcoder/mytomcat:0.1 .
# 第二种 使用docker tag #然后再次push
$ docker tag 容器id chengcoder/mytomcat:1.0 #然后再次push





推荐阅读
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 如何将本地Docker镜像推送到阿里云容器镜像服务
    本文详细介绍将本地Docker镜像上传至阿里云容器镜像服务的步骤,包括登录、查看镜像列表、推送镜像以及确认上传结果。通过本文,您将掌握如何高效地管理Docker镜像并将其存储在阿里云的镜像仓库中。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
author-avatar
手机用户2502933795
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有