docker的基本概念

Dokcer 部署流程

 

Docker简介

Docker(官网: https://www.docker.com/)一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker包括 Image(镜像) Container(容器)  Dockerfile 几个关键元素 从面相对象的角度来看 镜像就相当于一个类 容器就相当于一个一个的对象。

安装配置docker环境 依次执行以下命令

yum install -y yum-utils device-mapper-persistent-data lvm2

 

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

 

yum-config-manager --enable docker-ce-edge

 

yum install docker-ce

执行完以上命令如果没有异常则表示docker安装成功

 

然后启动docker服务

 

systemctl start docker

 

设置docker启动

 

chkconfig docker on

 

 

安装docker-compose工具

Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。

安装

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

 

sudo chmod +x /usr/local/bin/docker-compose

执行完之后 执行

docker-compose --version

显示如下则表示安装成功

 

 

 

创建镜像仓库

为了维护自己的镜像文件, 我们需要一个镜像仓库来存储。有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。也可以使用nexus。这里是使用的docker-registry

执行命令

 

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

 

 

 

然后修改/etc/docker/daemon.json文件 表明 如果没有则创建

{

  "registry-mirrors": ["https://5eajrcwh.mirror.aliyuncs.com"],

  "insecure-registries": ["10.129.27.53:5000"]

}

然后执行命令重启docker

 

systemctl daemon-reload

 

systemctl restart docker

 

构建项目镜像

创建镜像描述文件Dockerfile 并编辑如下 以api为例  其他war包应用类似改下war文名称即可

这是api.war对应的镜像文件内容

 

FROM dordoka/tomcat

MAINTAINER cxg <chaixg@xxxxx.com>

ENV CATALINA_HOME /opt/tomcat

ADD ./api.war $CATALINA_HOME/webapps/

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

 

在Dockerfile 所在目录执行即构建镜像并且api.war文件也在此目录下

 

docker build –t <imageName>:<tag> .

 

 

 

 

把构建好的镜像推送到镜像仓库中 以供其他人使用

docker push NAME[:TAG]

 

 

 

拉取仓库中的镜像到本地

docker pull NAME[:TAG]

 

 

 

 

也可以导出创建好的镜像为tar文件 然后在其他服务器上就可以加载这些文件生产本地镜像 使用如下

导出镜像为tar文件

 

 

 

加载镜像文件

 

 

 

创建docker-compose.yml文件

各应用使用docker-compose 进行编排

服务器一docker-compose.ym内容如下

version: '2'

services:

  zookeeper-host:

    image: "10.129.27.53:5000/zookeeper"

    ports:

     - "2181:2181"

  xxx-service-confmanager:

    image: "10.129.27.53:5000/confmanager"

    ports:

     - "8080:8080"

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

    depends_on:

     - zookeeper-host

  cloudadapter:

    image: "10.129.27.53:5000/cloudadapter"

    ports:

     - "8088:8080"

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

    depends_on:

     - xxx-service-confmanager

  xxx-web-cloud:

    image: "10.129.27.53:5000/cloud"

    ports:

     - "8085:8080"

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

    depends_on:

     - cloudadapter

  xxx-web-api:

    image: "10.129.27.53:5000/api"

    ports:

     - "8083:8080"

   # mem_limit: 2g

   # environment:

    # - CATALINA_OPTS= "-Xmx512m"    

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

    depends_on:

     - xxx-web-cloud

  nginx:

    image: nginx

    volumes:

     - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro

     - ./nginx/logs:/etc/nginx/logs

     - ./api/resources:/etc/nginx/html/resources

    ports:

     - "80:80"

    extra_hosts:

     - "api2:10.129.27.54"

    depends_on:

     - xxx-web-api

     - xxx-web-cloud

 

 

 

 

服务器二docker-compose.ym内容如下

 

 

version: '2'

services:

  cloudadapter:

    image: "10.129.27.53:5000/cloudadapter"

    ports:

     - "8088:8080"

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

     - "zookeeper-host:10.129.27.53"

     - "xxx-service-confmanager:10.129.27.53"

  xxx-web-cloud:

    image: "10.129.27.53:5000/cloud"

    ports:

     - "8085:8080"

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

     - "zookeeper-host:10.129.27.53"

     - "xxx-service-confmanager:10.129.27.53"

    depends_on:

     - cloudadapter

  xxx-web-api:

    image: "10.129.27.53:5000/api"

    ports:

     - "8083:8080"

    mem_limit: 2g

    environment:

     - CATALINA_OPTS=-Xmx800m -Xmx800m -XX:MaxNewSize=256m

    extra_hosts:

     - "redis-host:10.129.8.147"

     - "mysql-keystone-host:10.129.56.220"

     - "mysql-xxx-host:10.129.248.10"

     - "swift-keystone-web:10.129.56.220"

     - "swift-keystone:10.129.56.220"

     - "swift-proxy:10.129.56.216"

     - "zookeeper-host:10.129.27.53"

     - "xxx-service-confmanager:10.129.27.53"

    depends_on:

     - xxx-web-cloud

 

 

nginx.conf 配置内容如下

 

 

#user  nobody;

worker_processes  4;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

        

      upstream cloudprivate {

               server xxx-web-cloud:8080;

               server api2:8085; 

      }

 

      upstream xxx {

               ip_hash;

               server xxx-web-api:8080;

               server api2:8083; 

      }

 

 

    include       mime.types;

    default_type  application/octet-stream;

 

    log_format  main  '$remote_addr - $remote_user [$time_local] "$http_host" "$request" '

                      '$status $body_bytes_sent $request_length $content_length "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"'

                      '"$upstream_addr" "$request_time" "$upstream_response_time"';

 

 

    sendfile        on;

    keepalive_timeout  300;

    access_log  logs/access.log  main;

    client_max_body_size    5000m;

    proxy_read_timeout 300s;

    proxy_send_timeout 300s;

 

    server {

        listen       80;

        server_name  localhost;

 

         location = / {

            proxy_pass http://xxx/api/v1/p ;

            proxy_set_header    X-Forwarded-Proto   $scheme;

            proxy_set_header    Host                $host;

        }

 

        location /cloud {

           proxy_redirect              off;

           proxy_set_header            Host $host;

           proxy_set_header            X-real-ip $remote_addr;

           proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

           proxy_pass http://cloudprivate;

        }

 

         location /api{

            proxy_redirect              off;

           proxy_set_header            Host $host;

           proxy_set_header            X-real-ip $remote_addr;

           proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://xxx;

         }

 

         location / {

            root   html;

            index  index.html index.htm;

        }

    }

}

 

启动容器

在docker-compose.yml 所在目录下执行 docker-compose up –d 即启动各个容器

 

 

 

 

 

docker ps 查看当前正在运行的容器列表

 

 

 

docker logs –f <容器名称 or 容器id> 查看日志

 

 

 

 

停止容器

 

docker-compose stop 或者 docker stop <容器名称或者容器id>

转载于:https://www.cnblogs.com/jasonChai/p/10148217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值