Dockerfile紹介およびDocker常用コマンド


Dockerfileコマンド
Dockerfileには、ミラーの構築に使用できるコマンドが十数件あります.以下、これらのコマンドについて簡単に説明します.
ADD
ADDコマンドには、2つのパラメータ、ソース、ターゲットがあります.その基本的な役割は、ソースシステムのファイルシステムからターゲットコンテナのファイルシステムにファイルをコピーすることです.ソースがURLである場合、そのURLの内容はダウンロードされ、コンテナにコピーされます.
  • # Usage: ADD [source directory or URL] [destination directory]
  • ADD /my_app_folder /my_app_folder  

  • CMD
    RUNコマンドと同様に、CMDは特定のコマンドを実行するために使用することができる.RUNとは異なり,これらのコマンドはミラー構築中に実行されるのではなく,ミラーでコンテナを構築した後に呼び出される.
  • # Usage 1: CMD application "argument", "argument", ..
  • CMD "echo" "Hello docker!"

  • ENTRYPOINT
    コンテナの起動後に実行するコマンドを構成し、docker runが提供するパラメータで上書きできません.
    各Dockerfileには1つのENTRYPOINTしかありません.複数を指定すると、最後の1つだけ有効になります.
    ENTRYPOINTは、CMDコマンドとENTRYPOINTコマンドを組み合わせると、CMDコマンドからアプリケーションを削除してパラメータだけを保持することができ、パラメータはENTRYPOINTコマンドに渡されます.
  • # Usage: ENTRYPOINT application "argument", "argument", ..
  • # Remember: arguments are optional. They can be provided by CMD
  • # or during the creation of a container.
  • ENTRYPOINT echo
  • # Usage example with CMD:
  • # Arguments set with CMD can be overridden during *run*
  • CMD "Hello docker!"
  • ENTRYPOINT echo

  • ENV 
    EnVコマンドは、環境変数を設定するために使用します.これらの変数は「key=value」として存在し、コンテナ内でスクリプトまたはプログラムによって呼び出されます.このメカニズムは容器での応用を実行するのに極めて便利である.
  • # Usage: ENV key value
  • ENV SERVER_WORKS 4

  •  
    EXPOSE
    EXPOSEは、コンテナ内のアプリケーションがポートを介して外部と対話できるようにポートを指定します.
  • # Usage: EXPOSE [port]
  • EXPOSE 8080

  • FROM
    FROMコマンドは最も重要なDockerfileコマンドかもしれません.変更コマンドは、どのベースミラーを使用して構築プロセスを開始するかを定義します.ベースミラーは任意のミラーにできます.ベースミラーが見つからない場合、DockerはDockerイメージindexからミラーを検索しようとします.FROMコマンドはDockerfileの最初のコマンドでなければなりません.
  • # Usage: FROM [image name]
  • FROM ubuntu  

  • MAINTAINER
    理論的にはDockerfileの任意の位置に置くことができるが、このコマンドはDockerfileの開始部分に置くことを提案する.このコマンドは作者を宣言するために使用され、FROMの後ろに置くべきです.
  • # Usage: MAINTAINER [name]
  • MAINTAINER authors_name  

  • RUN
    RUNコマンドはDockerfile実行コマンドの核心部分である.パラメータとしてコマンドを受け入れ、ミラーを作成します.CMDコマンドとは異なり、RUNコマンドはミラーを作成するために使用されます(前のcommitのレイヤの上に新しいレイヤが形成されます).
  • # Usage: RUN [command]
  • RUN aptitude install -y riak

  • USER
    USERコマンドは、運転容器のUIDを設定するために使用します.
  • # Usage: USER [UID]
  • USER 751

  • VOLUME
    VOLUMEコマンドは、コンテナをホスト上のディレクトリにアクセスさせるために使用されます.
  • # Usage: VOLUME ["/dir_1", "/dir_2" ..]
  • VOLUME ["/my_files"]

  • WORKDIR
    WORKDIRコマンドは、CMDで示されるコマンドの実行ディレクトリを設定するために使用される.
  • # Usage: WORKDIR /path
  • WORKDIR ~/

  • Dockerfilesの使用方法
    Dockerfilesを使用するのは、Docker Daemonを手動で使用してコマンドを実行するのと同じように簡単です.スクリプト実行後に新しいミラーIDとして出力されます.
  • # Build an image using the Dockerfile at current location
  • # Example: sudo docker build -t [name] .
  • sudo docker build -t my_mongodb . 

  •  
    SpringBootテンプレートDockerfile
    FROM openjdk:8-jdk-alpine
    
    MAINTAINER chinoukin
    
    VOLUME /tmp
    
    ADD target/thyd-0.0.1-SNAPSHOT.jar app.jar
    
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    ShellテンプレートDockerfile
    FROM docker.io/anapsix/alpine-java 
    
    MAINTAINER chinoukin
    
    VOLUME /tmp
    ENV dkuser=chinoukin
    ENV PATH=$PATH:/bin
    
    ADD test.sh app.sh
    
    RUN /bin/sh -c "chmod u+x /app.sh"
    
    ENTRYPOINT ["./app.sh"]
    #ENTRYPOINT ["/bin/sh","/app.sh"]

     
    Docker共通コマンド
    docker build -t cyq/chydapp .     ,  “.”  dockerfile         
    
    docker images
    
    docker ispect cyq/chydapp        
    
    docker ps
    
    docker run -p 8080:8080 cyq/chydapp
    
    docker run --entrypoint="ls" cyq/chydapp   dockerfile  ENTRYPOINT
    
    docker run --entrypoint="" cyq/chydapp java -version     cyq/chydapp    java -version  ,dockerfile  ENTRYPOINT  
    
    docker exec -it b26b46503209 /bin/bash      
    
    docker stop b26b46503209 //         
    
    docker rm 9bce //    
    
    docker rmi 8c3b3f //