docker解析:

    1、登录docker

            docker ecex –it 容器名/容器id /bin/bash

        例如:

            docker exec –it tomcat /bin/bash

        1)、使用docker attach进入Docker容器,存在多个窗口同步和拥塞问题

            sudo docker attach 44fc0f0582d9

        2)、使用SSH进入Docker容器(不建议)

        3)、使用nsenter进入Docker容器

        4)、docker inspect 查看容器信息

            sudo docker inspect tomcat

        5)、使用docker exec进入Docker容器

            sudo docker exec --help

            sudo docker exec -it tomcat /bin/bash

            sudo docker exec -it mytomcat /bin/bash

    2、查看容器大小

        说明:Docker容器是基于镜像的读写层,它是可读可写的。读写某个文件的时候,是从镜像中将那个文件复制到容器的读写层,然后对复制的文件进行读写,而原文件依然在镜像中。而且,这个容器的读写层也是占用磁盘空间的。

 

        步骤1:先确认容器文件的默认路径

        默认情况下为/var/lib/docker/containers

        步骤2:进入容器目录

            cd /var/lib/docker/containersdu -sh *

        步骤3:查看所有容器的大小

            du -sh *

        步骤3:查看某个容器的大小

            du -sh <容器id>

 

    2、查看有什么目录

        一般在根目录查看docker 的目录或者比较特殊的一个目录,本次用例就是/z/docker有的是docker-java-home

 

    3、测试打包一个docker

        centos为原版增加jdk和tomcat

        1)拉取一个centos

            docker pull centos

        2)准备jdk8和tomcat

            创建工作目录, mkdir -p /z/docker

            准备root下已经上传了jdk和tomcat

            cp本机的jdk到/z/docker目录下

            tar -zxvf apache-tomcat-9.0.8.tar.gz -C /z/docker

            tar -zxvf jdk-8u91-linux-x64.tar.gz -C /z/docker

            解压到目录/z/docker下, 并重命名为jdk

            并重命名为jdk

            mv jdk1.8.0_91 jdk

            mv apache-tomcat-9.0.8 tomcat

        3)删掉jdk文件夹下多余文件, 降低build的镜像大小

            rm -rf /z/docker/jdk/*src.zip \

             /z/docker/jdk/lib/missioncontrol \

             /z/docker/jdk/lib/visualvm \

             /z/docker/jdk/lib/*javafx* \

             /z/docker/jdk/jre/lib/plugin.jar \

             /z/docker/jdk/jre/lib/ext/jfxrt.jar \

             /z/docker/jdk/jre/bin/javaws \

             /z/docker/jdk/jre/lib/javaws.jar \

             /z/docker/jdk/jre/lib/desktop \

             /z/docker/jdk/jre/plugin \

             /z/docker/jdk/jre/lib/deploy* \

             /z/docker/jdk/jre/lib/*javafx* \

             /z/docker/jdk/jre/lib/*jfx* \

             /z/docker/jdk/jre/lib/amd64/libdecora_sse.so \

             /z/docker/jdk/jre/lib/amd64/libprism_*.so \

             /z/docker/jdk/jre/lib/amd64/libfxplugins.so \

             /z/docker/jdk/jre/lib/amd64/libglass.so \

             /z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \

             /z/docker/jdk/jre/lib/amd64/libjavafx*.so \

             /z/docker/jdk/jre/lib/amd64/libjfx*.so

        4)进入/z/docker目录, 在当前目录下创建Dockerfile文件

            cd /z/docker

            vim Dockerfile

                #插入以下内容

                #使用的基础镜像

                FROM centos

                #作者信息

                MAINTAINER luhq7 "cztx29@126.com"

                #创建目录

                RUN mkdir -p /z/java/jdk

                #把当前目录下的jdk文件夹添加到镜像

                ADD jdk /z/java/jdk

                #创建tomcat目录

                RUN mkdir -p /z/java/tomcat

                #把当前目录下的tomcat文件夹添加到镜像

                ADD tomcat /z/java/tomcat

                #设置工作目录,这个命令是用来切换工作目录的,相当于cd命令

                WORKDIR /z/java/tomcat

                #添加环境变量

                ENV JAVA_HOME /z/java/jdk

                ENV CATALINA_HOME /z/java/tomcat

                ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

                #暴露8080端口

                EXPOSE 8080

                #启动时运行tomcat

                CMD ["/z/java/tomcat/bin/catalina.sh","run"]

        5)、开始制作

            docker build -t repos_local/centos-jdk-tomcat:0.0.1 .

            最后的 . 表示Dockerfile放在本目录

            如果是/home/表示Dockerfile在根目录下的home目录下

        6)、docker ps和docker images查看一下镜像

        7)、运行一个容器

            docker run -d --hostname mytomcat --name mytomcat -p 16002:8080 repos_local/centos-jdk-tomcat:0.0.1

            报错:需要重新启动docker进程

        8)、重启docker

            sudo systemctl restart docker

        9)、打开防火墙对应端口

             vim /etc/sysconfig/iptables

                 增加一行,端口为15672的限制取消

             防火墙重新生效

             service iptables restart

             查看那些端口可用:

                 netstat -lntp

             docker start mytomcat

OK至此完成docker(centos + tomcat +jdk)的制作

 

另 , 可以直接使用官方的tomcat镜像 , 把自己的网站目录映射到容器内部

mkdir /webapps

docker run -d --hostname webtomcat --name webtomcat -p 16003:8080 -v /webapps/:/z/java/tomcat/webapps/ repos_local/centos-jdk-tomcat:0.0.1

 

 

下一次制作一个centos +jar包的镜像

再一次制作一个centos +War包的镜像

 

 

 

制作一个centos+jdk8+tomcatd9镜像的更多相关文章

  1. 用ultraISO 制作一个MSdos启动软盘镜像

    见过软盘,但是没用过,在虚拟机里试试. 磁带,软盘,光盘,硬盘…… 储存介质一代代更新,看到的img.iso文件都是叫做镜像文件(image file ).image 即图片照片,所谓的image f ...

  2. 使用UNetbootin工具制作的CentOS 6.9镜像U盘在启动安装过程中出现:unable to read package metadata.this may be due to a missing repodata directory

    1.制作: 2.重命名文件 (前) (后) 这些文件是拷贝另一个得来的,并且后面的命名是根据repomd.xm这个文件来的. 参考: http://blog.csdn.net/maijunjin/ar ...

  3. Docker 学习:制作一个dockerfile

    dockerfile, 主要是四部分组成:基础镜像信息.维护者信息.镜像操作指令.容器启动执行指令. step 1: 按照语法,如下写一个centos操作系统的nignx镜像. 然后记得:wq保存和退 ...

  4. CentOS 6.5 网络服务器功能的实现②:运用光盘(镜像)制作一个本地yum源

    在用Linux安装软件时(rpm安装方式),有时会出现“包依赖”的现象.因此,我们可以用yum工具来实现一次性安装所有rpm工具包的功能. 实例:在此服务器上用yum的方式安装DHCP服务和TFTP服 ...

  5. Eucalyptus-利用镜像启动一个Centos实例

    1.前言 使用kvm制作Eucalyptus镜像(Centos6.5为例)——http://www.cnblogs.com/gis-luq/p/3990795.html 上一篇我们讲述了如何利用kvm ...

  6. Docker下制作一个容器镜像

    操作过程描述: (1)先基于centos的镜像启动一个centos容器 (2)在这个容器中安装nginx (3)然后把这个已经安装了nginx的容器制作成一个docker的镜像 操作:docker c ...

  7. 转:如何制作一个定制的 PHP 基础 Docker 镜像(一)

    原文来自于:http://open.daocloud.io/ru-he-zhi-zuo-yi-ge-ding-zhi-de-php-ji-chu-docker-jing-xiang/ 目标:准备一个定 ...

  8. 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件

    从零开始构建一个centos+jdk7+tomcat7的镜像文件 centos7系统下docker运行环境的搭建 准备centos基础镜像 docker pull centos 或者直接下载我准备好的 ...

  9. Docker启动一个Centos镜像

    docker镜像的获取与使用 docker中使用centos7镜像 接着上文,我们下载完成一个Centos镜像之后,开始启动 #运行命令 docker run -d -i -t <imageID ...

随机推荐

  1. 异步协程asyncio+aiohttp

    aiohttp中文文档 1. 前言 在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞.比如在网络爬虫中,如果我们使用 requests 库来进行请求的话,如果网站响应速度过慢,程序 ...

  2. LUA 在C函数中保存状态:registry、reference

    1 背景 lua的值一般都是保存在栈里面,调用函数完毕值在栈会被清掉,从而被GC回收.但有时候C函数需要在函数体的作用域之外保存某些Lua数据,这些数据不能存放在栈里面,有没有全局变量之类的可以存放. ...

  3. oracle之nvl,nvl2,decode

    oracle sql常用查询nvl,nvl2,decode区别及使用方法 1,NVL( E1, E2) 如果E1为NULL,则NVL函数返回E2的值,否则返回E1的值,如果两个参数都为NULL ,则返 ...

  4. CentOS 修改固定IP地址

    CentOS 修改固定IP地址 参考地址:https://www.cnblogs.com/technology-huangyan/p/9146699.htmlhttps://blog.csdn.net ...

  5. tornado异步请求响应速度的实例测试

    tornado异步请求响应速度的实例测试

  6. Drawable: getIntrinsicWidth()和getIntrinsicHeight()方法的使用误区

    经常会使用上述两个API来获取ImageView中显示图片的大小,但是在某些情况下,这两个API返回的大小可能与原图的大小不一致,比如原图大小是72*72,分别把原图放置在xhdpi,xxhdpi,x ...

  7. 复习Android布局

    效果如图: 这里没有做逻辑的处理,仅仅是布局的罗列.包括垂直和水平的线性布局,以及一个滚动的view. <?xml version="1.0" encoding=" ...

  8. Java并发包之线程池概述

    前言 线程池的作用就是将线程的管理.创建.销毁等操作与线程需要执行的任务隔离开来,从而避免线程频繁的创建与销毁,以及大量的线程的上下文切换造成的资源损耗.关于Java并发包中的线程池部分,我把它们分为 ...

  9. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_08-课程预览技术方案

    3.2.1 技术需求 课程详情页面是向用户展示课程信息的窗口,课程相当于网站的商品,本页面的访问量会非常大.此页面的内容设 计不仅要展示出课程核心重要的内容而且用户访问页面的速度要有保证,有统计显示打 ...

  10. Qt编写自定义控件42-开关按钮

    一.前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ.360卫士.金山毒霸等,都有很多开关控制一些操作,在Qt ...