[docker] docker compose 记录

docker compose

批处理
默认名称 docker-compose.yml
推荐使用Version3版本
图为docker-compose于docker版本配对
https://docs.docker.com/compose/compose-file/

V2和V3的区别:V2单机,V3多机

Service

一个service代表一个container,container可以从dockerhub的image创建,也可以从本地Dockerfile build出来的image创建
Service启动类似docker run,我们可以给其指定network和volume

  • dockerhub的image创建
services:
  db:   #名称
    image: postgres:9.4   #镜像
    volumes:
      - "db-data:/var/lib/postgresql/data"
    network:
      - back-tier

docker run -d --network back-tier -v db-data:/var/lib/postgresql/data postgres:9.4
docker volume create db-data

  • 本地Dockerfile build出来的image创建
services:
  worker:
    build: ./worker  # 本地构建dockfiles路径
    links:
      - db
      - redis
    network:
      - back-tier # 如果使用自定义网络,其实不需要links

源码示例:

version: ‘3‘
services:
  wordpress:
    image: wordpress
    ports:
      - 8080:80
    enviroment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: root
    networks:
      - my-bridge

  mysql:
    image: mysql
    enviroment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-bridge
volumes:
  mysql-data:

networks:
  mybridge:
    driver: bridge

docker compose 使用

docker-compose --version
linux用户需要单独安装docker-compose
`
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
`
指定要启动的yml文件
docker-compose -f docker-compose.yml up
不打印log后台启动
docker-compose up -d
查看compose状态:
docker-compose ps
停止启动compose:
docker-compose stop/start
删除compose,image保留:
docker-compose down
查看compose 镜像:
docker-compose images
进入mysql容器命令行:
docker-compose exec mysql bash
docker-compose exec wordpress bash

docker-compose实例

version: "3"
services:
  redis: redis
web:
  build:
    context:
    dockerfile: Dockerfile # 使用dockerfile去build
  ports:
    - 8080:5000
  enviroment:
    REDIS_HOST: redis

scale 扩展服务数量

yml文件中绑定本地端口不能有,删除port
docker-compose up --scale web=3 -d

配合scale添加负载均衡

docker-compose.yml实例

version: "3"
services:
  redis:
    image: redis
  web:
    build:
      context:
      dockerfile: Dockerfile # 使用dockerfile去build
    enviroment:
      REDIS_HOST: redis
  lb:
    image: dockercloud/haproxy
    links:
      - web
    ports:
      - 8080:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
app.py

from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get(‘REDIS_HOST‘, ‘127.0.0.1‘), port=6379)

@app.reoute(‘/‘)
def hello():
    redis.incr(‘hits‘)
    return ‘Hello container world!‘

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

Dockerfile

FROM pyton:2.7
LABEL maintaner="wyx"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 80
CMD ["python", "app.py"]

docker-compose up -
docker-compose up --scale web=3 -d

原文地址:https://www.cnblogs.com/mamang/p/12330495.html

时间: 2024-07-29 11:44:58

[docker] docker compose 记录的相关文章

Docker之Compose服务编排

Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理更为方便快捷. Compose网站:https://docs.docker.com/compos

(转)Docker之Compose服务编排

转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理

小白学Docker之Compose

承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是通过一个YAML文件进行服务配置. 使用Compose主要有三步: 在每个应用环境中配置一个Dockerfile,定义单个应用的镜像 使用docker-compose.yml来组装各个应用 运行docker-compose up命令来运行整个应用 一个基本的docker-compose.yml可能长

Docker使用问题记录贴

请参考: https://blog.csdn.net/u013948858/article/details/78429954 问题:安装Docker之后,执行docker run hello-world 命令,权限报错. daemonnnn@daemonnnn-virtual-machine:~$ docker --version Docker version 18.09.3, build 774a1f4 daemonnnn@daemonnnn-virtual-machine:~$ docker

【docker swarm 问题记录】InvalidArgument desc = EndpointSpec: port published with ingress mode can't be used with dnsrr mode

问题描述: 1 version: '3' 2 services: 3 config: 4 image: 172.30.253.133:5000/config:v1.0.0 5 networks: 6 cloud-overlay: 7 aliases: 8 - env-config 9 deploy: 10 replicas: 1 11 endpoint_mode: dnsrr 12 placement: 13 constraints: 14 - node.labels.env==test 15

[转帖]Docker里运行Docker docker in docker(dind)

Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in-docer.html mark一下 学习原作者的内容. Posted on 2017-05-24 目的 制作一个可以build docker镜像的docker镜像,jenkins CI服务节点,部署到阿里云的容器服务集群里. 阿里云官方有完整的镜像,master和slave的都有,时间稍微久远了一

docker swarm compose

swarm docker run swarm --help compose curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # mv /usr/local/bin/docker-compose /us

Docker Machine, Compose, and Swarm: How They Work Together

The three tools are now neatly packaged into what’s called the Docker Toolbox. Docker Machine1/ create Linux VMdocker-machine create --driver virtualbox containerhost or docker-machine create -d virtualbox local2/ open docker vm's interfaceeval "$(do

docker 学习操作记录 3

记录3 1 [BEGIN] 2019/12/4 16:53:35 2 Connecting to 192.168.114.130:22... 3 Connection established. 4 To escape to local shell, press Ctrl+Alt+]. 5 6 Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-70-generic x86_64) 7 8 * Documentation: https://help.ub