技術スタック-Docker


Dockerとは?

  • ドッキングステーションは、プロセス分離技術を使用してLinuxアプリケーションをコンテナとして実行および管理するオープンソースプロジェクト
  • です.

  • 既存の仮想マシンの保護カバーを使用して、独立したオペレーティングシステムとAPP->コンピュータ(サーバ)のスペースの浪費とリソースの浪費が深刻です.

  • 従来の仮想化方法はオペレーティングシステムを仮想化することであり、Dockder

  • Dockerは、1つのオペレーティングシステム上でAPPを実行するための適切なサイズのコンテンツ(スペース)のみを提供し、効率的にAPPを実行します.

  • Docker実行順序と用語クリーンアップ

  • Dockerファイルを作成し、Build→Dockerファイル
  • を作成します.
  • ドッキングステーションイメージ、
  • docker runでdockerコンテナ
  • を実行
  • ドッキングステーションプッシュで、ドッキングステーション
  • にドッキングステーション画像をアップロードできます.

    Containerの実行(事前に作成したDockerイメージの実行)


    画像検索:Docker Search App

  • docker search mysql#mysql画像検索結果出力

  • docker pull mysql#イメージのダウンロード

  • docker images#画像をチェック

  • イメージの実行(コンテナの実行)
    docker run --name mysql-container -d -p 1104:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:latestmysql:latest
    -その他の説明:mysql-container(コンテナ名)
    -1104は外部から接続するポートで、後ろのポートは内部ポートです.
    -つまり、workbenchなどの外部プログラムから接続する場合、任意のポートを指定し、内部ポートはmysqlで使用されるポートとして指定します.

  • けんさようき
    docker ps(現在実行されているコンテナを確認)
    docker ps-a(これまで稼働していたすべてのコンテナを表示)

  • 容器を閉じる
    docker rm ContainerID
  • Docker Compose


  • 2つ以上のDocker Conainerを実行したいなら?!

  • Word Press(+Mysql)を実行する場合は、次の操作を行います.
    -Dockerイメージを使用してMysqlを事前に実行
    -Word Pressリンクに接続して実行

  • Docker Componentの使用

  • Docker Componentとは?複数のコンテナのドッキング・アプリケーション定義を実行するツール

  • 長所
    -1つのファイルで2つ以上のコンテナを実行できます.
    -yamlで構成されているので読みやすさが良い
    -mysqlが必要なコンテナ、例えば接続プログラムに接続できます.
  • Docker Component webを使用してredisを実行

  • ComponentTestフォルダ
  • を作成
  • app.py作成
  • import time
    
    import redis
    from flask import Flask
    
    app = Flask(__name__)
    cache = redis.Redis(host='redis', port=6379)
    
    def get_hit_count():
        retries = 5
        while True:
            try:
                return cache.incr('hits')
            except redis.exceptions.ConnectionError as exc:
                if retries == 0:
                    raise exc
                retries -= 1
                time.sleep(0.5)
    
    @app.route('/')
    def hello():
        count = get_hit_count()
        return 'Hello World! I have been seen {} times.\n'.format(count
  • requirements.txtファイル
  • の作成
    flask
    redis
    作成
  • Dockerfile
  • # syntax=docker/dockerfile:1
    FROM python:3.7-alpine
    WORKDIR /code
    ENV FLASK_APP=app.py
    ENV FLASK_RUN_HOST=0.0.0.0
    RUN apk add --no-cache gcc musl-dev linux-headers
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    EXPOSE 5000
    COPY . .
    CMD ["flask", "run"]
  • docker-compse.yml
  • の作成
    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
      redis:
        image: "redis:alpine"

  • 運転端末
    docker-compose up

  • その他の説明:web,redis実行サービス
    -dockerを作成するにはdockerイメージが必要です.redisのみを定義します.
    -dockerfileをwebdocker buildの現在の位置の開始点として使用


  • Docker Componentを使用してMySQL実行環境を構成


  • docker-合成ファイルを作成(プロジェクトの下部にファイルを作成)

    -変更する部分を赤で表示

  • docker合成ファイルを含む場所で実行(端末)
    - docker-compose up

  • ワークベンチを使用したDB接続の作成


  • Localhostを使用してDocker Mysqlを構成


  • AWSを使用してDocker Mysqlを構成

  • TO DO

  • Dockerコマンド、Dockerfileコマンド等
  • Reference


  • https://ko.wikipedia.org/wiki/%EB%8F%84%EC%BB%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4 )

  • https://timewizhan.tistory.com/entry/docker-compose-%EB%9E%80

  • https://docs.docker.com/compose/gettingstarted/