Dockerfile紹介およびDocker常用コマンド
Dockerfileコマンド
Dockerfileには、ミラーの構築に使用できるコマンドが十数件あります.以下、これらのコマンドについて簡単に説明します.
ADD
ADDコマンドには、2つのパラメータ、ソース、ターゲットがあります.その基本的な役割は、ソースシステムのファイルシステムからターゲットコンテナのファイルシステムにファイルをコピーすることです.ソースがURLである場合、そのURLの内容はダウンロードされ、コンテナにコピーされます.
CMD
RUNコマンドと同様に、CMDは特定のコマンドを実行するために使用することができる.RUNとは異なり,これらのコマンドはミラー構築中に実行されるのではなく,ミラーでコンテナを構築した後に呼び出される.
ENTRYPOINT
コンテナの起動後に実行するコマンドを構成し、docker runが提供するパラメータで上書きできません.
各Dockerfileには1つのENTRYPOINTしかありません.複数を指定すると、最後の1つだけ有効になります.
ENTRYPOINTは、CMDコマンドとENTRYPOINTコマンドを組み合わせると、CMDコマンドからアプリケーションを削除してパラメータだけを保持することができ、パラメータはENTRYPOINTコマンドに渡されます.
ENV
EnVコマンドは、環境変数を設定するために使用します.これらの変数は「key=value」として存在し、コンテナ内でスクリプトまたはプログラムによって呼び出されます.このメカニズムは容器での応用を実行するのに極めて便利である.
EXPOSE
EXPOSEは、コンテナ内のアプリケーションがポートを介して外部と対話できるようにポートを指定します.
FROM
FROMコマンドは最も重要なDockerfileコマンドかもしれません.変更コマンドは、どのベースミラーを使用して構築プロセスを開始するかを定義します.ベースミラーは任意のミラーにできます.ベースミラーが見つからない場合、DockerはDockerイメージindexからミラーを検索しようとします.FROMコマンドはDockerfileの最初のコマンドでなければなりません.
MAINTAINER
理論的にはDockerfileの任意の位置に置くことができるが、このコマンドはDockerfileの開始部分に置くことを提案する.このコマンドは作者を宣言するために使用され、FROMの後ろに置くべきです.
RUN
RUNコマンドはDockerfile実行コマンドの核心部分である.パラメータとしてコマンドを受け入れ、ミラーを作成します.CMDコマンドとは異なり、RUNコマンドはミラーを作成するために使用されます(前のcommitのレイヤの上に新しいレイヤが形成されます).
USER
USERコマンドは、運転容器のUIDを設定するために使用します.
VOLUME
VOLUMEコマンドは、コンテナをホスト上のディレクトリにアクセスさせるために使用されます.
WORKDIR
WORKDIRコマンドは、CMDで示されるコマンドの実行ディレクトリを設定するために使用される.
Dockerfilesの使用方法
Dockerfilesを使用するのは、Docker Daemonを手動で使用してコマンドを実行するのと同じように簡単です.スクリプト実行後に新しいミラーIDとして出力されます.
SpringBootテンプレートDockerfile
ShellテンプレートDockerfile
Docker共通コマンド
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 //