Docker1.3판 boot2 docker+fig 시작

12076 단어 Dockerfigboot2docker
Docker1.3 나왔네요!
이것에 맞추기 위해 주변 도구가 업데이트되었습니다
나는 매우 편리하다고 생각해서 소개해 드리겠습니다.

Docker/boot2docker

  • Docker 1.3: signed images, process injection, security options, Mac shared directories
  • boot2docker에서 Volume 문제가 거의 해결됐어요.
  • Virtual Box Guest Additions 지원
    MacOS의 파일과 컨테이너 내의 동기화가 간단해졌습니다.
    또한 Docker는 exec 명령을 지원합니다.
    ssh를 설치하지 않아도 용기 내에서 명령을 실행할 수 있습니다.
    크다

    fig


    fig는 여러 Docker 컨테이너를 쉽게 관리할 수 있는 도구입니다.
    간단한yaml 파일만 준비하면 컨테이너 조작을 할 수 있습니다.
  • Fig 1.0: boot2docker compatibility and more
  • fig도 Docker의 게시에 따라 업데이트됩니다.

    예전과 뭐가 달라요?


    Docker1.2 이전에 boot2 docker+fig를 사용하려면 시간이 좀 걸렸어요.
    1.3부터 로컬에서 fig만 설정하면 사용할 수 있습니다.
    로컬 맥에서 컨테이너 조작과 동기화를 빈틈없이 할 수 있다는 것이다.
    사실 그 근처에 공을 들이기 위해Vagrant+Docker Provider를 이용해서
    현지 환경과 컨테이너의 동기화 구성을 고려했다
    (참조이 항목
    이렇게 번거로운 일을 하지 않아도 같은 일을 간단하게 실현할 수 있다.
    ※ 혹은 fig 강좌는 기본적으로 이 요구를 충족시켰다.지금까지 고생이 대체 뭐길래...

    사전 준비


    boot2 docker를 1.3으로 증가


    설치가 완료된 경우 버전 + VM을 업데이트하려면 다음 절차를 따르십시오.
    boot2docker upgrade
    boot2docker delete
    boot2docker download
    boot2docker init
    # 確認
    boot2docker version
    

    튜토리얼 실행


    보충과 동시에 공식 사이트와 대체적으로 같은 절차로 진행해 봅시다.
    디렉터리를 적당히 발굴하고 다음 파일을 놓으세요.
    (기타 Rails/Django/Wordpress의 샘플)

    응용 프로그램 만들기


    이 스크립트는 액세스 시에만 Redis에 카운트되고 표시됩니다.
    app.py
    
    # -*- coding: utf-8 -*-
    from flask import Flask
    from redis import Redis
    import os
    app = Flask(__name__)
    
    # ホスト=redisというのは、figが設定している/etc/hostsを参照しています。後ほど補足
    # もちろん、Docker標準の環境変数を利用してもOKです
    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__":
        # これはflaskの設定Tipsですが、他のコンテナから見えるようにhost="0.0.0.0"を設定する必要があります
        app.run(host="0.0.0.0", debug=True)
    
    requirements.txt
    flask
    redis
    

    Docker file 만들기


    ptyhon:2.7 이미지 다운로드
    Mac의 현재 디렉토리 아래를 컨테이너의/code에 추가
    pip에 필요한python 모듈이 설치되었습니다.
    Dockerfile
    FROM python:2.7
    ADD . /code
    WORKDIR /code
    RUN pip install -r requirements.txt
    

    파일 만들기


    fig.yml
    web:            # サービス名です。この名前でコンテナにアクセスできます
      build: .                  # ./Dockerfileを用いビルドする
      command: python app.py    # ビルド後のコンテナで実行するコマンド
      ports:
       - "5000:5000"            # ポートフォワード設定。フォーマットは <ホスト側ポート>:<コンテナ側ポート>
      volumes:
       - .:/code                # ボリューム設定。ローカル「.」を コンテナ「/code」に同期
      links:
       - redis:redis            # リンク設定。フォーマットは <サービス名>:<エイリアス名>
    redis:
      image: redis              # DockerRegistry上のredisイメージを用いコンテナ生成
    

    실행하다


    먼저 boot2 docker를 시작합니다.
    이어서 fig로 컨테이너 가동
    응용 프로그램이 실행되는지 확인합니다.

    boot2docker


    boot2 docker:VM 시작


    호스트 boot2 docker를 시작합니다.이것은 이전과 같다.
    # VM起動
    boot2docker up
    # Docker関連の環境変数設定
    #   コンソールに表示された環境変数をコピペでも良いですが、
    #   以下のコマンドでも良いらしい
    $(boot2docker shellinit)
    

    fig


    fig 명령을 실행합니다.
    대부분의 명령은 '서비스 이름' 을 매개 변수로 사용할 수 있습니다.
    서비스 이름을 생략할 때 "모든 서비스"를 대상으로 명령을 실행합니다.

    컨테이너 시작


    fig의 현재 디렉터리에서fig 명령을 실행합니다.
    (데몬 시작 시 -d 옵션 추가)
    (이미지가 이미 만들어진 경우 fig start 는 OK)
    fig up
    
    진정한 초회에만 이미지 다운로드 등의 상황이 발생할 수 있다
    두 번째 이후에는 한순간에 컨테이너를 가동할 것이다.

    샘플 응용 프로그램에 접근해 보십시오


    호스트 VM의 ip를 확인한 후 curl로 액세스하십시오.
    
    # IP確認。/etc/hostsなどに登録しておくと良いですね
    boot2docker ip
    # アプリにアクセス
    curl 192.168.59.103:5000
    (Hello World! I have been seen blah 1 times.)
    
    

    컨테이너 확인(서비스)


    ps 명령을 통해 확인할 수 있습니다.서비스명 등이 있어 보기 쉽다.
    -q 옵션을 지정하면 컨테이너 ID가 표시됩니다.
    fig ps 
    

    정지하다


    용기를 정지하다.
    fig stop
    

    로그 표시


    fig에서 용기 내의 로그를 가져올 수도 있습니다.
    다음은 웹 서비스를 얻는log입니다.
    
    # フォーマット
    fig logs サービス名
    # redisサービスのログ表示
    fig logs redis
    

    그리고


    몇 가지 지령이 있으니 fig 지령으로 확인해 주세요.

    fig에 대한 추가 정보


    서비스 이름이 /etc/hosts에 반영됨


    그렇지만 서비스 이름을 설정하면/etc/hosts에 반영됩니다.
    살짝 확인했는데 다음 느낌으로 반영하는 것 같아요.
    web:
      links:
        - redis:redis6379
    redis:
      ...
    
    web_etc_hosts
    ...
    x.x.x.x figtest_web_1
    x.x.x.x redis6379
    x.x.x.x redis_1
    x.x.x.x web
    x.x.x.x web_1
    x.x.x.x figtest_redis_1
    ...
    
    redis_etc_hosts
    ...
    x.x.x.x figtest_redis_1
    x.x.x.x redis
    x.x.x.x redis_1
    ...
    
    "자신의 호스트 정보"+ "링크스가 설정한 호스트 정보"를 설정한 것 같습니다.
    캣/etc/hosts로 확인해 보세요.

    총결산


    Docker1.다음은 3에 대응하는 boot2 docker와 fig의 기능을 소개한다.
    fig를 사용하면 컨테이너 관리를 간단하게 할 수 있다
    가장 중요한 것은 컨테이너 ID가 아닌 서비스 이름이어서 매우 편리하다.
    그리고 현지 환경의 구축으로 지금까지 고민했던 일들이 거의 사라졌다
    일종의 생활 방식 같다.
    아직'만졌다'정도니까 자기 환경에서도 많이 사용해 주세요.
    나는 개발 절차에 편입하고 싶다!!

    경품 중의 하나


    맥을 다시 시작한 Docker 시작 시간의 피부감
    로컬 파일과 컨테이너 내 파일이 동기화되는 경우
    포획을 기다립니다.
    fig의 부팅은 한순간에 끝납니다. 용기가 가장 높습니다♪

    덧붙이다


    fig.yml 한 장만 쓰기(!)구문을 사용합니다.
    여기는fig config입니다.
    Mac에서 서버로 API를 실행하고 싶어서요.
    consulserver만 다른 포트 (+10000) 에서 전송됩니다.
    fig.yml
    consulserver:
      image: progrium/consul
      command: -server -bootstrap
      ports:
       - "18300:8300"
       - "18400:8400"
       - "18500:8500"
    consulclientA:
      image: progrium/consul
      command: -join consulserver
      links:
       - consulserver
    consulclientB:
      image: progrium/consul
      command: -join consulserver
      links:
       - consulserver
    consulclientC:
      image: progrium/consul
      command: -join consulserver
      links:
       - consulserver
    
    시위가 이쪽에서 행진하다.

    좋지 않다.

    좋은 웹페이지 즐겨찾기