Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 基础架构

  • MQ

  • 微服务

  • 分布式

  • 高并发

  • 大数据

  • 容器化

    • Docker

      • Docker入门总结
      • Docker快速入门
      • Docker镜像优化
      • Docker数据持久化总结
      • Docker网络模式深度解读
      • Dockerfile入门
      • Dockerfile设置默认时区
      • Dockerfile中CMD与ENTERPOINT差异比较
      • Docker Compose使用总结
        • 示例
        • 常用命令
        • 常见问题
          • 1. ports和expose的区别
          • ports
          • expose
  • 架构设计
  • 容器化
  • Docker
Ravior
2018-06-03
目录

Docker Compose使用总结

Compose是一个定义和管理多容器的工具(非容器编排),使用Python语言编写。使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等;然后一条命令管理所有服务,比如启动、停止、重启

Compose 中有两个重要的概念:

  • 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。

# 示例

version: '2'
services:
  php:
    container_name: pay_php
    restart: always
    image: registry.cn-shenzhen.aliyuncs.com/jingyou/currency:base
    # image: registry.cn-shenzhen.aliyuncs.com/jingyou/php:swoole-45
    volumes:
    - ./code/currency-api2:/var/www/html
    - ./config/certificate:/var/www/html/certificate
    - ./config/openssl.cnf:/etc/ssl/openssl.cnf
    - /var/www/html/.git
    - /var/www/html/vendor
    ports: 
    - "9502:9501"
  db:
    container_name: pay_db
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    image: mysql:8
    ports:
    - 26021:3306
    environment:
      MYSQL_DATABASE: hyperf
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
  redis:
    container_name: pay_redis
    restart: always
    image: redis:5
network:
    default:
       external: payapi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
version: '3'
services:
  consumer:
    restart: always
    container_name: sentry-go-log-consumer
    build:
      context: ./code
      dockerfile: Dockerfile
1
2
3
4
5
6
7
8

# 常用命令

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

# 常见问题

# 1. ports和expose的区别

docker-compose中有两种方式可以暴露容器的端口:ports和expose。

# ports

ports暴露容器端口到主机的任意端口或指定端口,用法:

ports:
  - "80:80"         # 绑定容器的80端口到主机的80端口
  - "9000:8080"     # 绑定容器的8080端口到主机的9000端口
  - "443"           # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号
1
2
3
4

不管是否指定主机端口,使用ports都会将端口暴露给主机。

# expose

expose暴露容器给link到当前容器的容器,用法:

expose:
  - "3000"
  - "8000"
1
2
3

以上指令将当前容器的端口3000和8000暴露给link到本容器的容器。

和ports的区别是,expose不会将端口暴露给主机。

#Docker#docker-compose
上次更新: 2022/12/01, 11:09:34
Dockerfile中CMD与ENTERPOINT差异比较

← Dockerfile中CMD与ENTERPOINT差异比较

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式