docker容器编排原来这么丝滑~

虚幻大学 xuhss 197℃ 0评论

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

前言:

请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i

概念介绍:

Docker

Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心。

Docker-Compose

前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知

优点:

根据定义的docker-compose.yaml配置文件批量容器编排,轻松高效的管理容器定义,Docker就会按照你声明的配置去把所有的容器启动起来及运行

缺点:

但是Docker-Compose只能管理当前主机上的Docker,也就是说不能去启动其他主机上的Docker容器

使用事项:

compose是docker官方的开源项目,需要安装!与它配对使用的是一个docker-compose.yaml文件,docker-compose命令必须在一个包含docker-compose.yaml文件目录下才能使用。

Compose 使用的三个步骤:

  • 使用Dockerfile定义应用程序的环境。
  • 使用 docker-cmpose.yaml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-cmpose up 命令来启动并运行整个应用程序。

docker-cmpose.yaml的配置案例如下(配置参数参考下文):

version: "3.0" # 对于docker版本号
services: #定义服务
 web: #web引用,自己编写的程序,下面是应用配置
 build: . #获取当前目录下Dockerfile文件编译
 depends\_on: #代表启动顺序
 - db
 - redis 
 ports:
 - "5000:5000" #端口暴露
 volumes: #挂载路径
 - .:/code
 - logvolume01:/var/log
 links:
 - redis
 redis: #redis应用
 image: redis
 deploy:
 replicas: 6 #副本数
 db: #db应用
 images:postgres
volumes:
 logvolume01: {}

实践

一、环境准备

在 Linux 系统上安装 Docker

使用compose必然需要docker

1.1 yum安装Docker

yum install docker    #安装docker,需要root

1.2 查看版本

docker --version  #查看版本

样例输出:

cf1200ddebf472ce7a2e42de73999e4f - docker容器编排原来这么丝滑~

1.3 启动docker

sudo systemctl start docker.service    #启动 Docker

sudo systemctl enable docker.service #关闭Docker

在 Linux 系统上安装 Compose

由于compose是docker官方的开源项目,需要安装!!!

1.1 下载compose

# 国外
 sudo curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 
# 国内(推荐)
 sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

1.2 添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose #授权

1.3 查看版本

docker-compose --version #查看版本

样例输出:

6bf7aa493507ba7f83fba95356697303 - docker容器编排原来这么丝滑~

二、项目实施

2.1 创建项目

此处以Springboot项目为例,其pom.xml依赖如下

 <dependencies>

        <dependency>
            <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-webartifactId>
 dependency>

 <dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-testartifactId>
 <scope>testscope>
 dependency>

 <dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-data-redisartifactId>
 dependency>
 dependencies>

2.2 新增application.properties配置

注:在此示例中,redis是应用程序网络上的 redis 容器的主机名

#配置启动端口
server.port=8888
#配置redis地址,此处指定后续dockers镜像名称
spring.redis.host=redis 

2.3 编写程序计数器

package com.example.compose;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

 /**
 * .
 * 注入redis
 */
 @Autowired
 private StringRedisTemplate redisTemplate;

 /**
 * .
 * 程序计数器,每访问一次就+1
 *
 * @return
     */
 @GetMapping("/hello")
 public String hello() {
 Long views = redisTemplate.opsForValue().increment("views");
 return "hello docker compose views:" + views;
 }
}

2.4 创建 Dockerfile

在你的项目目录中,创建一个Dockerfile。有关编写 Dockerfile 更多信息,请参阅 Docker 用户指南Dockerfile 参考

#指定jdk1.8
FROM java:8
#当前jar拷贝到容器中指定名称
COPY *.jar /app.jar
#程序运行时指定程序端口
CMD ["--server-port=8888"]
#暴露端口
EXPOSE 8888
#运行
ENTRYPOINT ["java", "-jar","/app.jar"]

2.4 编排服务

在你的项目目录中创建一个名docker-compose.yaml的文件。定义了两个服务:composeappredis.

version: '3.0' #对应版本号

services:
 composeapp:
 build: . #表示获取当前目录下Dockerfile文件进行编译
 #dockerfile: Dockerfile #指定当前目录下的文件
 image: composeapp #镜像名称
 depends\_on: #优先启动
 - redis
 ports: #端口映射
 - "8888:8888"

 redis: #拉取镜像
 image: "library/redis:alpine"

友情提示:上述版本号对比示例图。官网对比链接

bae975095ac03b66c9b4c1f72b611344 - docker容器编排原来这么丝滑~

2.5 将项目打包

4abdf6836b50fbb386b78c88e2822226 - docker容器编排原来这么丝滑~

三、服务上传启动

3.1 Linux创建一个目录

 mkdir my\_composeapp  #创建目录

 cd my\_composeapp #进入

3.2 上传相关文件

上传项目打包后的jarDockerfiledocker-compose.yaml相关配置文件

3.3 启动compose服务

注:docker-compose命令必须在一个包含docker-compose.yaml文件目录下才能使用

docker-compose up 

docker-compose up -d #-d【后台启动】

docker-compose down  #关闭 【ctrl + c】

样例输出:

457d15035446cbb71469c390e75d5cbe - docker容器编排原来这么丝滑~

项目启动,页面输出日志

916bbc09ac7b1892434b15ad62b604e2 - docker容器编排原来这么丝滑~

3.4 查看运行的容器

此处可见已拉取redis镜像并生成了容器、及已生成java项目运行容器

4fcd116c5932c6a0ec9a11848259d21c - docker容器编排原来这么丝滑~

3.5 访问样例

curl localhost:8888/hello  #访问测试

样例输出:

9327091a8b0223239368267da687f6cd - docker容器编排原来这么丝滑~

至此,docker-compose使用简直在方便了!!!大大简化了我们的部署工作。学废的小伙伴记得给自己加鸡腿~

总结:

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

参考链接参考链接

转载请注明:xuhss » docker容器编排原来这么丝滑~

喜欢 (0)

您必须 登录 才能发表评论!