Docker Compose快速入门

6 篇文章 0 订阅
5 篇文章 0 订阅

Docker Compose

简介

在前面学习的docker我们操作的都是单个容器,Dockerfile build 手动操作。
在微服务情况下,100个微服务!如果使用一个 一个的手动操作也是非常麻烦的。
因此 Docker Compose 来轻松高效的管理容器,定义运行多个容器!

官网介绍

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。要了解有关 Compose 的所有功能的更多信息,请参阅功能列表。
Compose 适用于所有环境:生产、登台、开发、测试以及 CI 工作流。您可以在Common Use Cases 中了解有关每个案例的更多信息。
使用 Compose 基本上是一个三步过程:

  1. 使用 定义您的应用程序的环境,Dockerfile以便它可以在任何地方复制。
  2. 定义组成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。
  3. 运行docker compose up和 Docker compose command 命令启动并运行你的整个应用程序。您也可以docker-compose up使用docker-compose 二进制文件运行。

Docker Compose 的理解
Docker Compose 就是把多个容器编排到一个文件中。

Docker Compose 安装

Linux 环境下

## 1. 运行此命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
##  你可以也通过执行下面的命令,高速安装Docker Compose。
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

## 2. 对二进制文件应用可执行权限:
sudo chmod +x /usr/local/bin/docker-compose

##测试安装。
$ docker-compose --version
docker-compose version 1.29.2, build 1110ad01啊

Docker Compose 常用命令和配置

  • ps:列出所有compose运行 容器
docker-compose ps
  • logs:查看服务日志输出
docker-compose ps
  • port:打印绑定的公共端口
docker-compose port eureka 8761
  • build:构建或者重新构建服务
docker-compose build
  • start;启动指定服务已存在的容器
docker-compose start	xiaomingapp
  • stop:停止已运行的服务的容器
docker-compose stop redis
  • rm:删除知道服务的容器
docker-compose rm redis
  • up:构建、启动容器
docker-compose up
  • kill:停止知道服务的容器
  • run:在一个服务上执行一个命令
docker-compose run web bash
  • pull:下载服务镜像
  • scale:设置知道服务运行容器的个数,以service=num形式指定
docker-compose scale user=3 movie=3

docker-compos.yaml 属性

docker-compose.yaml 核心

具体每个参数参考官方文档

官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/

## 主要是分为 3层. 版本--》服务--〉其他配置/
version: ""		## 版本
services:		## 服务
	服务1:  		## web
		build:
		...
		image:
		networks:
		volumes
		...
		
	服务2:		## redis
		...
## 其他配置 网络/卷,全局规则
volumes:
network:
configs:

案例

version: "3.9" ## 版本
services:		## 服务
  web:
    build: .
    depends_on:	  ##依赖。先执行 db redis
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

学习,需要掌握规律!

使用docker-compose 网络

使用docker-compose 编排容器,会创建一个默认定义一个网络,所有容器都是使用该网络,而且容器之间是可以连通的。

xiaoming[root@cn-mbp-c02v221ahv2f java]# docker network list
NETWORK ID     NAME           DRIVER    SCOPE
25463fc507cb   bridge         bridge    local
77b421abcbd9   host           host      local
e5f240fc6078   java_default   bridge    local
b7ade70af5bc   mynet          bridge    local
c2509facb374   none           null      local
3f39b14d72a7   redis          bridge    local

使用docker-compose 打包部署jar

编写测试java web 应用 只使用redis 做测试

@RestController
public class HelloController {

    @Autowired
    private RedisTemplate redisTemplate;

    @RequestMapping("hello/{name}")
    public String hello(@PathVariable("name") String name){
        redisTemplate.opsForValue().set("name",name);
        return (String) redisTemplate.opsForValue().get("name");
    }

这里我们使用 redis服务名称进行网络连通

server.port=8080
spring.redis.host=redis
[root@cn-mbp-c02v221ahv2f java]# vi docker-compose.yml 
version: '3.3'
services:
  xiaomingapp:
    image: xiaomingapp
    build: .
    ports:
    - 8080:8080
    depends_on:
      - redis
  redis:
    image: "redis:alpine"
[root@cn-mbp-c02v221ahv2f java]# vi Dockerfile 
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080

[root@cn-mbp-c02v221ahv2f java]# ll
total 26424
-rw-r--r--. 1 root root      168 Aug  3 01:49 docker-compose.yml
-rw-r--r--. 1 root root      108 Aug  3 01:48 Dockerfile
-rw-r--r--. 1 root root 27049938 Aug  3 01:48 hello-0.0.1-SNAPSHOT.jar

使用 docker-compose up --build 进行构建

[root@cn-mbp-c02v221ahv2f java]# docker-compose up  --build 
[root@cn-mbp-c02v221ahv2f java]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                                       NAMES
f697833af140   xiaomingapp    "java -jar /app.jar …"   4 hours ago   Up 4 hours   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   java_xiaomingapp_1
b1f576accdd1   redis:alpine   "docker-entrypoint.s…"   4 hours ago   Up 4 hours   6379/tcp                                    java_redis_1


测试 成功

[root@cn-mbp-c02v221ahv2f java]# curl localhost:8080/hello/xiaoming
xiaoming
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值