Docker总结
参考博客
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