kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Dockerのお勉強 (2)

続き

第3回 Docker入門(第三回)~各種dockerコマンドとDockerイメージ作成について~

自分でミドルウェアやアプリを追加したDockerイメージを作る

  • docker runのその他オプション
    • -i アタッチしていなくても STDIN をオープンにし続ける
    • -t 疑似ターミナル (pseudo-TTY) の割り当て
    • -v ホスト側ディレクトリ:コンテナ側ディレクトリ ホストとコンテナのディレクトリ共有
  • CentOS7のイメージ名 centos:7
  • ホストからコンテナへのコピー docker cp ホスト側ファイル コンテナ名:コンテナ側ディレクトリ
    • コンテナ側でwgetすることも可能
    • コンテ内でのコマンドの起動 docker exec -it コンテナ名 コマンド
    • docker exec -it コンテナ名 bashbashが起動
  • コンテナが起動してなくてもログが取得できるようにディレクトリを共有しておく
  • dockerコンテナを作るふたつの方法
    • コマンドをdockerfileに書いて作成する
    • コンテナからイメージを作成する docker commit コンテナ名 作成するDockerイメージ名
    • 再現性の点からdockerfileを使う方法がおすすめ

Infrastructure as a codeだなあ

第4回 Docker入門(第四回)~Dockerfileについて~
dockerfileの中身について

  • dockerfile
    • FROM コンテナ名 コンテナの指定
    • RUN コマンド コンテナ内でコマンドを実行
    • ADD tar.gzファイル ディレクトリ コンテナにtar.gzを展開する
    • USER ユーザ名 ユーザ変更
    • WORKDIR ディレクトリ名 ディレクトリ変更
    • CMD ["コマンド" "オプション"] コンテナ起動時に実行するコマンドの指定
  • dockerfileからイメージを作成 docker build -t Dockerイメージ名 Dockerfileのディレクトリ
  • dockerfileの各コマンドを実行するたびに中間イメージ(レイヤー)を作る
    • ディレクトリがもとに戻ってしまうので注意
    • RUNでコマンドを連続して実行したい場合は&&などを使う
  • レイヤーはキャッシュとして利用される
    • 複数のイメージで共通に行う処理は先頭の方に入れておくとキャッシュが有効に利用される

第5回 Docker入門(第五回)〜コンテナ間通信〜

  • 一つのコンテナでは一つの機能(アプリケーション)を動かすのが普通なのでコンテナ間通信が必要
  • --linkオプションを使う方法はレガシーなので使わない
  • Dockerネットワークを作ってコンテナ名で接続する
    • DNS設定がされてコンテナ名で名前解決ができる
    • 接続先を設定するところでコンテナ名を指定することになる
  • Dockerネットワークを作成する docker network create Dockerネットワーク名
  • Dockerネットワークの一覧 docker network ls
  • Dockerネットワークの詳細表示 docker network inspect Dockerネットワーク名
  • Dockerネットワークの指定 docker run --network Dockerネットワーク名
  • 複数ホストの間で通信を行うときはKubernetesなどのコンテナオーケストレーションツールを使うと便利

第6回 Docker入門(第六回)〜Docker Compose〜

  • Docker Composeは複数コンテナをまとめて管理するツール
  • コンテナのビルドや起動をdocker-compose.ymlに書いて使う
  • Dockerネットワークは自動的に作成されるので記述は不要
  • イメージのビルド docker-compose build
    • --build-arg http_proxy=http://プロキシサーバIP:ポート プロキシ設定(http)
    • --build-arg https_proxy=http://プロキシサーバIP:ポート プロキシ設定(https)
  • 実行 docker-compose up -d
  • 起動状態の確認 docker-compose ps
  • コンテナの停止 docker-compose stop
  • コンテナの削除 docker-compose rm
    • -f 強制的に削除
  • 停止、削除、ネットワーク削除 docker-compose down
    • --rmi all イメージも削除

使いそうな分はだいたいわかった気がする
あとは公式のリファレンスでいけるかな?