Docker安装各种应用大数据运维

Docker总结

2018-10-24  本文已影响0人  任嘉平生愿

参考博客
http://www.ityouknow.com/docker.html

目录:
Docker是什么
第一个docker-springboot-helloworld
docker-compose
docker-machine
docker-swarm

Docker是什么

https://www.cnblogs.com/SzeCheng/p/6822905.html

第一个docker-springboot-helloworld

提示安装docker请根据自己的环境 我的是centeros7
https://blog.csdn.net/chinrui/article/details/79721366
先新建一个springboot 项目
代码

package org.spring.boot.sample.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Helloworld {
  @RequestMapping("/")
  public String hello ()
  {
      System.out.println("hello world docker");
      
      return "hello world docker";
  }
}

先本地运行保证可以访问
然后用maven package打包
springboot-docker-helloworld.jar
接着在linux环境操作
mkdir docker
chmod 777 -R docker
cd docker
vi Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springboot-docker-helloworld.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

将生成的springboot-docker-helloworld.jar也放到docker这个目录里

然后执行
docker build -t docker .
启动docker项目添加端口
docker run -d -p 8080:8080 docker
访问linuxip:8080
输出
hello world docker
查看所有运行的容器
docker ps  -a 
关闭容器
docker stop d0e5e4794aae(container id)

docker-compose

下载
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
安装
chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose version

成功

docker-compose version 1.20.0, build ca8d3c6
docker-py version: 3.1.3
CPython version: 3.6.4
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

快速上手
我们设计这么一个场景,使用 Python 启动一个 Web 服务,输出一个hello()方法,每次访问的时候在 Redis 缓存中进行计数,并且将统计的结果打印到页面中。

第一步,创建 Python 服务

创建项目路径:

mkdir composetest
cd composetest
在目录下创建app.py文件

import time

import redis
from flask import Flask


app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

在这个例子中, redis 使用了容器内的网络默认端口是6379。这段 Python 程序的内容就是,启动后连接 Redis 并且输出 hello()方法,当每次访问的时候累计访问次数并且将结果放回到页面。

在同目录下创建requirements.txt文件,添加项目依赖的python包:

flask
redis

Flask 是 Python 中一个微型的 Web 开发框架。
第二步,创建 Dockerfile

我们来写一个 Dockerfile 来定义 Docker 镜像,此镜像包含了 Python 的依赖包和 Python 环境。

同样在此目录下,我们创建一个 Dockerfile 文件。

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

这段代码表示:

使用基础镜像 Python 3.4
将当前目录映射到镜像/code目录下
设置工作目录为 /code
安装 Python 依赖包
启动 app.py 程序
第三步,使用 Compose 文件定义一个服务

在当期目录下,我们创建一个 docker-compose.yml 文件,内容如下:

version: '2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

这个 Compose 文件定义了两个服务, 一个 Pyhon Web 服务和 redis 服务。

Pyhon Web 服务:使用 Dockerfile 构建了当前镜像。将 Web 容器内部的5000端口映射到 host 的5000端口;并将 Web 容器与 redis 容器连接。
redis服务:该容器直接由官方的 redis 镜像创建。
第四步,使用 Compose 编译启动应用

使用命令docker-compose up启动
然后访问
http://linuxip:5000/
访问多次显示

Hello World! I have been seen 8 times.

关闭所有的docker-compose
docker-compose down

Docker-machine

http://www.ityouknow.com/docker/2018/03/30/docker-machine.html
使用 Docker Machine 方便在不同的环境中使用 Docker ,比如:Win/Mac
使用 Docker Machine 方便在云环境下批量部署 Docker环境,比如:私有云,公有云批量安装Docker环境

安装virtualbox
安装 virbox
在/etc/yum.repos.d/目录下新建virtualbox.repo并写入如下内容

[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
yum -y install kernel-devel-3.10.0-862.el7.x86_64
yum install gcc make perl
yum install VirtualBox-5.2
sudo /sbin/vboxconfig
docker-machine create --driver virtualbox manager1
docker-machine ssh manager1

Docker-swarm
http://www.ityouknow.com/docker/2018/04/19/docker-swarm.html

spring cloud 与 docker-compose构建微服务

https://blog.csdn.net/u012734441/article/details/77832797

Spring cloud + Swarm mode 实战二:部署微服务

https://blog.csdn.net/timedifier2/article/details/78135970

docker使用阿里云镜像仓库__docker

docker学习之阿里

https://yq.aliyun.com/ziliao/283741?spm=a2c4e.11155472.blogcont.17.77eb7c12iNyBgv
https://dev.aliyun.com/search.html

docker实现swarm+compose部署服务

http://blog.51cto.com/itdby/1970571

Dockerfile 中文文档

https://blog.csdn.net/guyue35/article/details/53891862

上一篇下一篇

猜你喜欢

热点阅读