north-memo

日常のメモをしている

Docker勉強備忘録1

節目を迎えたので、今週平日はUQをもらっている。

興味が出てきたのでDockerを勉強してみている。

相変わらずお世話になっているドットインストール
http://dotinstall.com/lessons/basic_docker

Dockerっちゅうのは...

Dockerってのは、アプリケーションを環境とまとめてパッケージ化する(環境をコンテナ、パッケージされたものをイメージという)ものらしい。
環境もまとめてパッケージ化するから、Dockerさえ立ち上がれば、他のマシンでも同じ動作を保証できるというもの(マシン性能等再現できないものもあるけど)
仮想環境との違いは、仮想環境はホストOS上に仮想マシンを作るが、Dockerコンテナでは、この仮想マシンがない(代わりにDockerEngine)。マシンリソースは全コンテナで共有。仮想マシンがないから軽量で手軽。

Dockerの構成

面倒なので図にした。引用元を記述すれば自由に転載していいです。

f:id:ln_north:20161012044301p:plain

Dockerの操作

Dockerのインストール

この辺に乗っている。 今回はSandbox的に用意している仮想Ubuntu 14.04上にインストールした。
https://www.docker.com/products/docker

Ubuntuはこっち
https://docs.docker.com/engine/installation/linux/ubuntulinux/

Dockerの一連の流れ

  • docker search {検索ワード} | more DockerHubのIndexからイメージを探す
  • docker pull {イメージ名} Docker Hub から イメージを持ってくる
  • docker run {イメージ名} イメージの実行
  • Docker

イメージの操作

  • docker search {検索ワード} | more イメージの検索
  • docker pull {イメージ名} イメージをDocker Hubからホストへ持ってくる
  • docker images ホストにあるイメージ一覧を表示
  • イメージの指定は {イメージ名}:{バージョン} or {イメージのIDの先頭n文字(識別できるまで)}
  • docker inspect {イメージ指定] イメージの詳細を表示
  • docker rmi {イメージ指定} イメージを削除

イメージの実行 / 終了 / 削除・コンテナの管理

  • docker run {イメージ指定} イメージの実行
    • ex. Ubuntuの実行 docker run -i -t ubuntu /bin/bash
    • -iインタラクティブモード
    • docker run {イメージ指定} の後にはコマンドが打てる
    • -d をつけるとバックグラウンド実行(Dockerに限らないけど…)
      • docker attach --sig-proxy=false {コンテナ指定} コンテナをフォアグラウンドにもってくる
  • docker ps 実行中のコンテナの一覧
    • docker ps -a 停止しているコンテナも表示
  • コンテナの指定は、IDか名前で指定できる
  • docker logs {コンテナ指定} コンテナのログを取れる
  • docker kill {コンテナ指定} コンテナの終了
  • docker start {コンテナ指定} コンテナの再開
  • docker rm {コンテナ指定} コンテナの削除

コンテナに変更を加えてイメージを作る(例)

コンテナに直接変更を加える(docker commit)

  • Ubuntuの実行などでコンテナに変更を加える docker run -i -t ubuntu /bin/bash
  • docker commit {コンテナID} {イメージ名(username/imagename)} でイメージを作成

DockerFileで自動化(docker build)

  • Dockerfile という名前のファイルを作る
  • https://docs.docker.com/engine/reference/builder/ を参照して作る
    • FROM {イメージ名} 継承するファイル
    • MAINTAINER 名前 <email> で作成者を記入
    • RUN {コマンド} ビルドされるときに実行
    • CMD ["コマンド", "コマンド", ... ] runするときに実行
  • `docker build -t {イメージ名(username/imagename)} {Dockerfileがあるディレクトリのpath}
  • イメージができる!(docker images で確認しよう)

作成したイメージをDocker Hubにpush

  • docker login
  • docker push {イメージ名(username/imagename)}

参考文献