Docker入门?

题外话

       先说说题外话,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容器中,新建好的目录结构应该是如下图:


Docker入门?_第1张图片
图1

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

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

Dockerfile文件内容如下

#拉取nginx的镜像
FROM nginx:alpine
#写入作者信息
MAINTAINER A.Dong [email protected]
#将本地文件中已经写好的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的内容如下


        < WatchedResource >WEB-INF/web.xml
       
       

web.xml需要修改的点如下

...

        1800

...

server.xml需要修改的为

图2

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

FROM tomcat:7.0.82
MAINTAINER A.Dong [email protected]
 #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

看看是否在执行


Docker入门?_第2张图片
图3

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


遗留问题

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

未完,待续~~~~~

你可能感兴趣的:(Docker入门?)