zoukankan      html  css  js  c++  java
  • Docker学习笔记

    一、概念

    Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器)。

    使用Docker Compose 的步骤:

    1. 定义容器 Dockerfile
    2. 定义应用的各个服务 docker-compose.yml
    3. 启动应用 docker-compose up 

    二、安装

    Note that Compose 1.8.0 requires Docker Engine 1.10.0 or later for version 2 of the Compose File format, and Docker Engine 1.9.1 or later for version 1.

    # curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    # chmod +x /usr/local/bin/docker-compose

    也可以用pip或官网的run.sh脚本安装

    安装后确认

    # docker-compose --version

    三、运行

    1、创建一个Python应用

          使用Flask,将数值记入Redis

    1.1 建立一个python应用目录和文件

    复制代码
    # mkdir python
    # cd python
    
    # vi app.py 
    from flask import Flask
    from redis import Redis
    
    app = Flask(__name__)
    redis = Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        redis.incr('hits')
        return 'Hello World! I have been seen %s times.' % redis.get('hits')
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", debug=True)
    
    # vi requirements.txt 
    flask
    redis
    复制代码

    1.2 创建 Dockerfile

    在同一目录下,创建Dockerfile

    # vi Dockerfile 
    FROM python:2.7
    ADD . /code
    WORKDIR /code
    RUN pip install -r requirements.txt
    CMD python app.py

    对上面的Dockerfile做一下简单说明:

    • 容器使用Python 2.7的镜像
    • 将当前目录下文件拷贝到容器内/code
    • 指定工作目录为/code
    • 安装python需要的库:flask, redis
    • 容器执行命令 python app.py

    1.3 创建编排脚本

    在同一目录下,创建 docker-compose.yml

    复制代码
    # cat docker-compose.yml 
    version: '2'
    services:
      web:
        build: .
        ports:
         - "5000:5000"
        volumes:
         - .:/code
        depends_on:
         - redis
      redis:
        image: redis
    复制代码

    对上面的编排脚本做一下简单说明:

    • 这个应用定义了两个服务:web, redis
    • web容器通过当前路径下的Dockerfile生成
    • web容器内的5000端口映射到主机的5000端口
    • 将当前目录挂载到web容器内/code
    • web容器依赖于redis容器
    • redis容器从Docker Hub获取镜像

    1.4 启动应用

    会执行编排脚本,分别制作和抓取web,redis镜像,启动容器

    # docker-compose up

    1.5 访问应用

    http://localhost:5000/ 

    四、命令

    1、daemon模式启动/停止

    # docker-compose up -d
    # docker-compose stop

    2 查看信息

    # docker-compose ps

    3 对容器执行命令(一次)

    #docker-compose run services cmd

    例如:查看web容器环境变量

    # docker-compose run web env

    五、例子

    1、例一 - docker-compose.yml

    version: '2'
    services:
      web:
        image: dockercloud/hello-world
        ports:
          - 8080
        networks:
          - front-tier
          - back-tier
    
      redis:
        image: redis
        links:
          - web
        networks:
          - back-tier
    
      lb:
        image: dockercloud/haproxy
        ports:
          - 80:80
        links:
          - web
        networks:
          - front-tier
          - back-tier
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock 
    
    networks:
      front-tier:
        driver: bridge
      back-tier:
    driver: bridge

    2、例二 - docker-compose.yml

    复制代码
    # cat docker-compose.yml 
    version: '2'
    services:
      db:
        image: mysql:5.7
        volumes:
          - "./.data/db:/var/lib/mysql"
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: wordpress
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: wordpress
    
      wordpress:
        depends_on:
          - db
        image: wordpress:latest
        links:
          - db
        ports:
          - "8000:80"
        restart: always
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_PASSWORD: wordpress
    复制代码

    3、例三 - docker-compose.yml

  • 相关阅读:
    Leetcode Reverse Words in a String
    topcoder SRM 619 DIV2 GoodCompanyDivTwo
    topcoder SRM 618 DIV2 MovingRooksDiv2
    topcoder SRM 618 DIV2 WritingWords
    topcoder SRM 618 DIV2 LongWordsDiv2
    Zepto Code Rush 2014 A. Feed with Candy
    Zepto Code Rush 2014 B
    Codeforces Round #245 (Div. 2) B
    Codeforces Round #245 (Div. 2) A
    Codeforces Round #247 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7890249.html
Copyright © 2011-2022 走看看