Dockerfile
RUN yum -y install httpd
exec形式の記述
exec形式ではshellを介さずに実行される。 シェルを使用したい場合は、以下のようになる。
RUN ["/bin/bash","-c","yum -y install httpd"]
/bin/shを介したい場合 => shell形式 それ以外 => exec形式
CMD
RUN命令はイメージを作成するために実行するコマンドを記述するが、イメージを元に生成したコンテナ内でコマンドを実行するにはCMD命令を使います。 docker run命令で実行される
ENTRYPOINT
docker run命令で実行される。CMDと同じだが、ENTRYPOINTの場合は、docker run時にオプションを指定しても上書きできない。
ONBUILD
自身のDockerfileから生成したイメージをベースイメージとした別のDockerファイルをビルドするときに実行したいコマンドを記述
起動関連
docker run [イメージ名][:タグ名]
option
-d: バックグラウンドで起動 -p: ポートを指定(例. 8080:80でlocalhost:8080でdockerの80番ポートにフォワードされる)
イメージの作成
Dockerfileを使用してdockerのイメージを作成
docker build -t [イメージ名] [Dockerfileの場所]
実行されたコマンドの確認
docker history [イメージ名]
logコンテナを指定
--valumes-from log-container web-image(webサーバー用コンテナのイメージ)
使用していないimageの削除
docker iamge prune [-a]
-aは全ての使用していないimageを削除
稼働コンテナへの接続
docker container attach [コンテナ名]
稼働コンテナでプロセス実行
バックグラウンドで実行しているコンテナにアクセスしたい時、docker container attachコマンドで接続しても、シェルが動作していない場合は、コマンドを受け付けることができない。その時は、docker container execコマンドを使用。
docker container exec -it webserver(container name) /bin/bash
Dockerfileの書き方
# centosバージョン7を指定 # Dockerイメージの指定 FROM centos:centos7 # 作成者を記述 MAINTAINER lastname firstname a@aaa.com # [Dockerfileの作成者] # 環境変数の設定 ENV myName "name" # もしくは[ENV myName="name"]
ENV
ENV myName "name" ENV myNickName nickname
の場合は命令ごとにDockerイメージを作成 一度に複数の値をセットするときはkey=valueを使う
ENV myName="name" \ myNickName=nickname
VOLUME
データの保存先。 VOLUME命令で指定したディレクトリは、他のコンテナがマウント可能なボリュームとして利用できる。
用語
- Dockerfile: インフラ構成を記述したファイルのこと。
- タグ名: dockerイメージのバージョン
- ダイジェスト: DockerHubにアップロードすると自動で付与される識別子
- ボリューム: ハードウェア上の記憶領域
- マウント: 記憶装置や周辺機器をOSに認識させ、利用可能な状態にすること
- スケールアウト: システムを構成するサーバーの台数を増やすことで、システムの処理能力を高めることをいいます。
- プロセス: メモリ上に配置されたプログラムが実行されるとプロセスになる
- シグナル: プロセスに対して送る命令
- VPC: 仮想ネットワークの中で、AWSのリソースを起動できるサービス
- クラスタ(Cluster): タスクを実行するためのコンテナインスタンスの論理グループ。
- コンテナインスタンス: ECSエージェントが稼働するEC2インスタンスで、クラスタに登録されているもの。
- タスク定義: CPU/メモリやコンテナ間のリンクなどを設定したコンテナの定義。
- タスク: タスク定義を実体化したもの。
- コンテナ: タスクにより生成されたDockerコンテナのこと。
- サイジング: トラフィックの寮に応じてシステム基板のサーバのスペックやネットワークの帯域を見積もる設計
- マルチステージビルド: アプリケーションをbuildするためのDockerイメージとプロダクション環境で実際に動作させるDockerイメージを同時に作成できる
DockerfileからDockerイメージを作成
docker build コマンドを使用
docker build -t sample:1.0 .
Docker registry
Dockerイメージを一元管理するためのリポジトリサービス version0系と2系があるが、基本的に2系を使ったほうが良い。(それぞれに互換性ない