ただ日々を記すもの

意識高めを装うことができます

Dockerまとめ

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系を使ったほうが良い。(それぞれに互換性ない