ただ日々を記すもの

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

kubernetesメモ

kubernetesとは

複数のホストを束ねてDockerを利用するためのオーケストレーションツールで、分散環境において「あたらかも1台のコンピュータ」のように透過的にコンテナにアクセスすることが可能。

基本的な概念

Pod

複数のコンテナをまとめてPodとして管理。 Podの中には、アプリケーションサーバ用のDockerコンテナとプロキシサーバ用のコンテナなど関連するものをPodにまとめます。

ReplicaSet

kubernetes上であらかじめ指定されたPodを作成/起動しておく仕組みです。=クラスタ上に決められた数のPodを必ず起動しておくもの

Doployment

PodとReplicaSetをまとめたもので、ReplicaSetの履歴を管理するもの。

定義されたレプリカの数を維持する役目を追うのがReplicaSetで、ReplicaSetの作成や更新を定義するのがDeployment。

Dockerまとめ2

docker-compose

複数のコンテナを起動するとき、コンテナごとに構成や起動/停止を管理していると運用が煩雑になり大変... そこでdocker-composeを使用する。

docker-composeは、複数のコンテナ(DB用やwebサーバー, logのコンテナ)をまとめて管理するためのツール。

構成ファイルは docker-compose.yml

docker-compose.ymlにはimageかbuildを必ず指定する

imageの指定

webserver:
  image: centos:latest

imageの構成をDockerfileに書いて、それを自動でビルドしてベースイメージに指定することもできる

webserver:
  build: .

buildにはdocker-compose.ymlのあるディレクトリをカレントディレクトリとした時のDockerfileの場所を指定。

コマンド

  • command コンテナで動かすコマンドを指定
command: /bin/bash
  • links

同一のdocker-compose.ymlに定義がある

links:
  - dbserver
  - dbserver:mysql # 別名を定義
  • external_links 同一のdocker-compose.ymlに定義がない
external_links:
  - redis
  - project_db:mysql
  • ports/expose
ports:
  - "3000"
  - "8000:8000"

ホストマシンへポートを公開せず、リンク機能を使って連携するコンテナにのみポートを公開する場合はexpose

expose:
  - "3000"
  - "8000"

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

Font Awesomeについてもろもろ

iconを重ねる

<div class-"fa-stack">
  <i></i>
  <i></i>
</div>

アイコンを重ねるためには、fa-stackを親要素に追加して、子要素に重ねるアイコンを配置します。 子要素は次のようにクラスを追加します。

  • 外側に見せたいアイコン

=> fa-stack-2x(少し大きめのサイズ)

  • 内側に見せたいアイコン

    => fa-stack-1x(通常サイズ)

さらに、親要素に対してアイコンのサイズを指定することで、重ねたアイコン全体のサイズを調整することができます。

<span class="fa-stack fa-3x blue">
  <i class="fa fa-square-o fa-stack-2x"></i>
  <i class="fa fa-twitter fa-stack-1x"></i>
</span>

文字の感覚を調整

文字とアイコンの間隔を少し広げるためには、fa-fwを使います。

リストのマーカーをアイコンに

チェックリストのリストアイコンを置き換えるためには、ulタグにfa-ulを設定して、liタグの中にあるアイコンにfa-liを設定します。

<ul class="fa-ul">
  <li><i class="fa fa-square-o fa-li"></i>チェック</li>
<ul>

float属性をつける際の注意

float属性を指定すると、要素は それを囲む要素の高さに関係無く表示され、スタイル崩れが起きる場合があります。

したがって、float属性を指定する際には、その一つ上の要素(例えば li要素ならば ul要素 など)にoverflow属性を指定し、その値にhidden をつけるようにします。