美文网首页
Docker入门?

Docker入门?

作者: 阿东zh | 来源:发表于2018-01-24 15:54 被阅读135次

    题外话

           先说说题外话,Docker这个东西,的确是带来了很大的便利,让开发-测试-生产 三个阶段的环境统一,并且方便了部署的处理,而且还将单机器的性能发挥到最大!~~~但是也存在缺陷,缺陷在与问题的查找(这个和你的docker架构有关),发发闹骚= =||


    问题

            docker到底是什么?

            它到底能做什么?

            我们如何来用它?

            与它有关联的有哪些东西?

    解决问题

            问题一:docker到底是什么?

            答:不扯哪些什么高大尚的东西,很多docker入门都把docker是什么,都是从什么LXC开始说起,我这里就说docker就是一个软件,一个让我们能封装我们程序到固定系统的软件,它让我们更好的携带它做环境的部署

            问题二:它到底能做什么?

            答:docker能更大的便于运维上面的管理,并且将开发环境、测试环境、生产环境三大环境统一,不会出现环境不同导致各式各样的问题。

            问题三:我们如何来用它?

            答:我们可以用它来搭建我们的集群,搭建我们自己的多服务负载,并且还能更好的使用我们的服务器端口映射

            问题四:与它有关联的有哪些东西?

            答:有kubernetes、docker-machine、docker-swarm。首先kubernetes在安装的时候就会安装docker,所以这个是一定相关的;docker-compose与docker-machine、docker-swarm并称为docker三剑客,这三个之间的关系是不容置疑的了。


    入门

            首先入门,当然要做docker的安装了,当然不同的系统有不同的安装方式,具体的可以参照官方文档来安装,这里我就不累赘说明了

            官方文档地址 https://docs.docker.com/engine/installation/#server

            下面就直接说示例了,实际操作来的快些

    实操

            环境:vmware14 + centos7.4 +docker18.01.0-ce

            docker插件部署:使用docker-compose,安装方式,也是看官方 https://docs.docker.com/compose/install/ 自行观看安装

            示例:做tomcat+nginx+redis的session共享

            首先我们在centos7.4里面新建一个目录docker,我们放到data根目录下,然后在docker里面新建nginx和tomcat两个文件夹,并在tomcat文件里面建两个文件夹lib和conf两个文件夹,用于我们的jar和配置文件的copy到docker容器中,新建好的目录结构应该是如下图:

    图1

            那么我们来编写我们的Dockerfile,首先我们写我们的nginx的Dockerfile,进入nginx文件夹新建文件Dockerfile

    touch  /data/docker/nginx/Dockerfile
    vim  /data/docker/nginx/Dockerfile

    Dockerfile文件内容如下

    #拉取nginx的镜像
    FROM nginx:alpine
    #写入作者信息
    MAINTAINER A.Dong noroadzh@sina.cn
    #将本地文件中已经写好的nginx拷贝到容器中
    COPY nginx.conf /etc/nginx/
    #指定容器的开放端口
    EXPOSE 80 
    #执行nginx
    CMD ["nginx", "-g", "daemon off;"]

    nginx.conf我就不提供了

    写完了nginx,我们进入tomcat文件夹来完成我们tomcat的编写和准备,我们使用的tomcat为7.0.82最新的tomcat7的版本

    tomcat要做redis的session共享,需要准备三个jar包,并且还学要修改配置文件

    三个jar包为:

                commons-pool2-2.2.jar
                jedis-2.5.2.jar
                tomcat-redis-session-manage-tomcat7.jar

    下载好这三个包,放入我们的/data/docker/tomcat/lib 文件夹中

    jar包有了,我们还需要修改我们的配置文件 context.xml 、web.xml、server.xml

    context.xml是为了指定我们session用的是redis,并且redis的连接地址是什么,使用的命名空间是什么

    web.xml是为了设定我们的session过期时间

    server.xml是为了解决中文乱码问题

    context.xml的内容如下

    <?xml version="1.0" encoding="UTF-8" ?>

    <Context>
            < WatchedResource >WEB-INF/web.xml</WatchedResource>
            <Value className="com.orangefunction.tomcat.redissession.RedisSessionHandlerValve" />
            <Manager className=" com.orangefunction.tomcat.redissession.RedisSessionManager" host="redis" port="6379" database="0" maxInactiveInterval="1800" />
    </Context>

    web.xml需要修改的点如下

    ...
    <session-config>
            <session-timeout>1800</session-timeout>
    </session-config>
    ...

    server.xml需要修改的为

    图2

    然后我们在tomcat文件夹下面直接新建一个Dockerfile文件,文件内容如下:

    FROM tomcat:7.0.82
    MAINTAINER A.Dong noroadzh@sina.cn
     #copy custorm file into lib and web and conf
    COPY ./lib/ /usr/local/tomcat/lib/
    COPY ./conf/ /usr/local/tomcat/conf/
    COPY ./web/ /usr/local/tomcat/webapps/
     #open port
    EXPOSE 8080
    CMD ["~/tomcat7/bin/catalina.sh", "run"]

    然后我们回到我们的docker主目录,写我们的docker-compose.yml文件,内容如下

    version: '2'
    services:
         tomcat01:
             container_name: "tomcat01" 
             build: ./tomcat
             expose:
                 - "8080"
             volumes:
                 - /data/docker/tomcatWeb/log01:/usr/local/tomcat/logs/
             links:
                 - redis:redis
             restart: always
         tomcat02:
             container_name: "tomcat02"
             build: ./tomcat
             expose:
                 - "8080"
             volumes:
                 - /data/docker/tomcatWeb/log02:/usr/local/tomcat/logs/
             links:
                 - redis:redis
             restart: always
         tomcat03:
             container_name: "tomcat03"
             build: ./tomcat
             expose:
                 - "8080"
             volumes:
                 - /data/docker/tomcatWeb/log03:/usr/local/tomcat/logs/
              links:
                 - redis:redis
              restart: always
        redis:
              image: "redis:Alpine"
             container_name: "redis"
             expose:
                - "6379"
             ports:
                 - "6379:6379"
             restart: always
             command: redis-server --appendonly yes
         nginx:
             build: ./nginx
             container_name: "nginx1.13.8"
             links:
                 - tomcat01:t01
                 - tomcat02:t02
                 - tomcat03:t03
             expose:
                 - "80"
             ports:
                 - "8080:80"
             volumes:
                 - /data/docker/nginx/logs:/var/log/nginx/
             restart: always

    至此,我们的准备工作完成了,然后我们在/data/docker 文件夹目录下面,执行我们的命令

    docker-compose up -d

    后我们就是等待了

    是否安装好了,我们用下面命令看看

    docker-compose ps

    看看是否在执行

    图3

    看见的确是在执行状态,至此我们就搭建完了我做了测试是可以正常访问的


    遗留问题

            session感觉还是没有共享到,不知道是docker的问题,还是怎么的,因为这个环境我不用docker容器,直接在系统里面跑是没有发生当不同tomcat访问的时候,session共享的问题,问了下高手,他们说也遇见了相同的问题,但是用了docker-swarm做集群后就没有发现了,我也只有自己去尝试了

    未完,待续~~~~~

    相关文章

      网友评论

          本文标题:Docker入门?

          本文链接:https://www.haomeiwen.com/subject/czayaxtx.html