dockerとdocker-composeの使用概要

13923 ワード

一、Docker


1、docker概念


Dockerは開発したアプリケーションをコンテナに自動的に配置できるオープンソースエンジンです.DockerはLinuxコンテナのパッケージに属し、簡単で使いやすいコンテナ使用インタフェースを提供し、アプリケーションはこの仮想コンテナで実行されます.dockerの3つの基本概念:
  • は特殊なファイルシステムをミラーし、異なるレイヤを1つのファイルシステムに統合するのに十分であり、これらのレイヤに統一的な視点を提供し、このように多層の存在を隠し、ユーザーの観点から見ると、1つのファイルシステムしか存在しない.2.コンテナコンテナはミラーと類似しており、コンテナはミラーの実装クラスに相当し、操作可能なミラーである.3.倉庫にミラーが保管されている場所は、倉庫からミラーを引き出すことも、構築されたミラーを倉庫に転送して、他のサーバーがミラーを使用できるようにすることもできます.

  • 2、dockerの基本コマンド:


    dockerのインストール
     yum install -y docker
    

    バージョンの表示
    docker -v
    

    開始
    systemctl start docker
    

    dockerサービスの再起動
    systemctl restart  docker
    service docker restart
    

    dockerを閉じる
    service docker stop   
    systemctl stop docker
    

    ミラーの検索
    docker search NAME   
    

    倉庫からミラーを引き出す
    docker pull CONTAINER  
    

    ダウンロードしたミラーの表示
    docker images
    

    ミラー詳細の表示
    docker inspect  ID
    

    ミラーの作成
    1)           
    docker commit  [OPTIONS]     /  ID
    -a ""        
    -m ""       
    -p  ""            
    2)        
    cat    XXX.tar.gz |docker import -    
    3)  Dockerfile  
           
    docker save -o  XXX.tar        docker load --input XXX.tar
    

    ミラーのアップロード
    docker push  NAME[:TAG]
    

    ミラーの削除
    docker rmi   imageid
    

    実行中のコンテナの表示
    docker ps
    

    すべてのコンテナを表示
    docker ps -a 
    

    コンテナを削除
    docker rm ID
    

    スターティングコンテナ
    docker start  TED
    

    ていしようき
    docker stop  TED
    

    ログの表示
    docker logs ID
    

    新規コンテナ
    docker create it     :   
    

    コンテナを新規作成して起動
    docker run  ...    -d        
    

    容器に入る
    docker exec -it     ID  bash   
    docker attach    ID
    

    コンテナを終了
    exit
    

    コンテナのインポートとエクスポート
    docker export  CONTAINER  >  test.tar
    cat test.tar | docker import  -CONTAINER  
    

    コンテナ内のデータボリュームの作成
    docker run -d -P --name rongqiname -v /webapp  centos
    

    ホストディレクトリビットデータボリュームをマウントし、/src/webappディレクトリをコンテナの/opt/webappディレクトリにロード
    docker run -d -P --name web -v /src/webapp:/opt/webapp centos   
    

    dbdataコンテナを作成し、データボリュームを/dbdataディレクトリにマウントします.
    docker run -it -v /dbdata --name dbdata ubuntu
    

    コンテナdb 1を作成し、dbdataデータボリュームコンテナをdb 1およびdb 2にマウントします.これにより、/dbdataディレクトリのコンテンツはdb 1およびdb 2で共通になります.
    docker run -it --volumes-from dbdata --name db1 ubuntu
    docker run -it --volumes-from dbdata --name db2 ubuntu
    

    dbdataデータボリュームコンテナ内のデータボリュームのバックアップ
    Dockerfile    
    1.      
    from  ubuntu
    2.     
    maintainer docker_user docker_user@email.com
    3.       
    4.        
    

    3、docker-composeの基本コマンド:


    docker-composeのインストール
    curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    

    インストール完了の承認
    chmod +x /usr/local/bin/docker-compose
    

    インストールに成功したかどうかを確認
    docker-compose --version
    

    docker-compose XXX,XXXは以下のパラメータとすることができる
    up
    

    Component質問で定義されたすべてのコンテナを起動し、ログ情報を集約します.通常-dパラメータ(upの後ろ)が追加され、コンテナがバックグラウンドで実行されます.
    start 
    

    指定した既存のコンテナを起動
    build
    

    Dockerfileによって構築されたミラーを再構築します.
    ps
    

    Componentが管理するコンテナのステータス情報を取得する
    run
    

    コンテナを起動し、使い捨てのコマンドを許可します.接続されたコンテナは、--no-depsパラメータを使用しない限り、同時に起動します.
    logs
    

    Componentが管理するコンテナのログを集約し、カラーで出力します.
    stop
    

    コンテナを停止しますが、削除しません.
    rm
    

    停止したコンテナを削除します.Dockerが管理するデータボリュームを削除するには-vパラメータを使用することを忘れないでください.
    docker-composeを使用してzookeeeperとkafkaを起動する例:docker-composeをカスタマイズする必要がある.yaml、docker-compose.yamlディレクトリの下でdocker-compose up-dを実行します.zookeeeperとkafkaコンテナが作成され、起動されます.
    version: "3"
    services:
      zookeeper-0:
        container_name: zookeeper-0
        image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/zookeeper:3.4.10
        hostname: zookeeper-0
        environment:
        - ZK_REPLICAS=1
        - ZK_HEAP_SIZE=2G
        - ZK_TICK_TIME=2000
        - ZK_INIT_LIMIT=10
        - ZK_SYNC_LIMIT=5
        - ZK_MAX_CLIENT_CNXNS=60
        - ZK_SNAP_RETAIN_COUNT=3
        - ZK_PURGE_INTERVAL=1
        - ZK_LOG_LEVEL=INFO
        - ZK_CLIENT_PORT=2181
        - ZK_SERVER_PORT=2888
        - ZK_ELECTION_PORT=3888
        ports:
        - "2181:2181"
        - "2888:2888"
        - "3888:3888"
        command:
        - sh
        - -c
        - zkGenConfig.sh && exec zkServer.sh start-foreground
        volumes:
        - "./kafka/zk:/var/lib/zookeeper"
      kafka-0:
        container_name: kafka-0
        image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/kafka:1.0.0
        hostname: 127.0.0.1
        depends_on:
        - zookeeper-0
        links:
        - zookeeper-0
        ports:
          - "9092:9092"
        command:
        - sh
        - -c
        - "/opt/kafka/bin/kafka-server-start.sh config/server.properties \
               --override zookeeper.connect=zookeeper-0:2181 \
               #--override log.dirs=/opt/kafka/data/logs \
               --override broker.id=0 "
        volumes:
        - "./kafka/kafka:/opt/kafka/data"
      # mysql:
      #   container_name: mysql
      #   hostname: mysql
      #   image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17
      #   ports:
      #   - "3306:3306"
      #   environment:
      #     MYSQL_ROOT_PASSWORD: root
      #   volumes:
      #   - ./mysql/mysql_data:/var/lib/mysql
      #   - ./mysql/mysql_db.cnf:/etc/mysql/conf.d/mysql_db.cnf