Docker的安装

  1. 查看系统的内核

    [roo@www ~]$ uname -r
    3.10.0-1160.59.1.el7.x86_64
    



  2. 查看系统配置

    cat /etc/os-release



  3. 卸载旧的版本

    [root@www ~]# yum remove docker \
                       docker-client \
                       docker-client-latest \
                       docker-common \
                       docker-latest \
                       docker-latest-logrotate \
                       docker-logrotate \
                       docker-engine
    



  4. 下载需要的安装包

    yum install -y yum-utils



  5. 设置镜像的仓库

    yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo  #国外的地址
        
        # 设置阿里云的Docker镜像仓库
    yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #国内的地址
    



  6. 更新yum软件包索引

    yum makecache fast



  7. 安装docker相关的配置

    docker-ce 是社区版,docker-ee 企业版

    yum install docker-ce docker-ce-cli containerd.io

    出现了completed即安装成功



  8. 启动Docker

    systemctl start docker
    # 查看当前版本号,是否启动成功
    docker version
    # 设置开机自启动
    systemctl enable docker

  9. hello-world

    [root@www ~]# docker run hello-world

  10. 查看一下下载的这个hello-world镜像

    [root@www ~]# docker images
    REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
    hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
    





构建自己的centos

  1. 在/home目录下创建一个dockerfile目录,到时候所有东西就放这儿

    [root@www /]# cd /home
    [root@www home]# ls
    ceshi  docker-test-volume  hziee  mysql  roo
    [root@www home]# mkdir dockerfile
    [root@www home]# ls
    ceshi  dockerfile  docker-test-volume  hziee  mysql  roo
    [root@www home]# cd dockerfile/
    [root@www dockerfile]# 
    



  2. 创建一个名为mydockerfile-centos的文件,在里面编写DockerFile的指令

    [root@www dockerfile]# vim mydockerfile-centos



  3. 编写dockerfile的配置文件

    cat 指令表示查看mydockerfile-centos这个文件里面的内容,所以返回值就是配置文件的内容

    [root@www dockerfile]# vim mydockerfile-centos 
    [root@www dockerfile]# cat mydockerfile-centos 
    FROM centos:7
    MAINTAINER lcdzzz<1473220685@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
    
    



  4. 通过这个文件构建镜像

    #↓↓↓运行这个命令↓↓↓,注意有 “.”
    #命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]
    docker build -f mydockerfile-centos -t mycentos:0.1 .

    显示successfully代表成功

  5. 对比原生的centos

  6. 我们可以列出本地进行的变更历史 docker history 镜像id





Dockerfile制作tomcat镜像

  1. 准备镜像文件tomcat压缩包,jdk压缩包



  2. 编写dockerfile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要 -f 去指定了

    FROM centos:7
    MAINTAINER lcdzzz<1473220685@qq.com>
    
    COPY readme.txt /usr/local/readme.txt
    
    ADD jdk-10.0.1_linux-x64_bin.tar.gz /usr/local/
    ADD apache-tomcat-9.0.62.tar.gz /usr/local/
    
    RUN yum -y install vim
    
    ENV MYPATH /usr/local
    
    WORKDIR $MYPATH
    
    ENV JAVA_HOME=/usr/local/jdk-10.0.1
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62
    ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.62
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    
    EXPOSE 8080
    
    CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/bin/logs/catalina.out
    



  1. 构建镜像,前面说了,build会自动寻找文件,所以不需要指定

    #docker build -t diytomcat .
    docker build -t diytomcat .

    显示successfully代表成功



  2. 运行镜像

    docker run -d -p 9090:8080 --name lcdzzztomcat -v /home/lcdzzz/build/test:/usr/local/apache-tomcat-9.0.62/webapps/test -v /home/lcdzzz/build/tomcatlogs/:/usr/local/apache-tomcat-9.0.62/logs diytomcat



  3. 进入容器

    docker exec -it 1d24f83eec24c5 /bin/bash



  4. 访问测试,在宿主机上测试,不是在容器里

    curl localhost:9090



  5. 发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)

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


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>hello.lcdzzz</title>
    </head>
    <body>
    Hello World!<br/>
    <%
    System.out.println("---my test web logs---");
    %>
    </body>
    </html>



  6. 项目部署成功,直接访问就ok

    先通过 ifconfig 查看虚拟机的ip地址

    访问





总结

  • 通过dockerfile来构建Docker镜像


  • 通过

    docker build -t diytomcat .命令生成镜像


  • 然后运行,进入容器


  • 由于做了卷挂载,我们直接在本地编写项目就可以发布了

    意思是容器中的/usr/local/apache-tomcat-9.0.62/webapps/test下的文件会和宿主机(也就是虚拟机)的/home/lcdzzz/build/test的文件同步,对应的日志文件也同理


  • 所以,如果要调试程序,在运行起容器以后,只需要在本地编写代码就可以发布项目了,如下图所示

    日志的话会出现在主机下的 /home/lcdzzz/build/tomcatlogs下的catalina.out当中