Docker概論

コンテナとはなにか

どの環境でも全く同じように動作することを踏まえてソフトウェア開発を実施することが可能になる。 VMとよく比較されるが、下記のメリットがある。

  1. ホストOSで実行するのとほとんど所要時間が変わらない。
  2. 環境差異によるバグを完全に防いでくれる。
  3. VMに比べ、遥かに多くのコンテナを実行できる。
  4. 設定やインストールの煩雑性からのがれる。

比喩として、運送のコンテナの比喩が挙げられる。 そう言えばコンテナ物語読まないと。

世界を変えたのは「箱」の発明だった

はじめの一歩

docker run 引数 コマンドを実行して、引数のイメージを実行する。

docker run debian echo "Hi"  
Unable to find image 'debian:latest' locally  
latest: Pulling from library/debian  
741437d97401: Pull complete  
Digest: sha256:066051f6674f6a3293bbd5a190081b1ae7fcae655a3884db59ebb3a2831da623  
Status: Downloaded newer image for debian:latest  
Hi  

次に同じことを実行すると、イメージをすでに持っているので、一瞬で行われる。

次は、SSHのように、このコンテナに入る。

$ docker run -i -t debian /bin/bash
root@8402df28366f:/#  

停止したコンテナのクリーンアップを行う。

docker rm -v $(docker ps -aq -f status=exited)  
_________________  
< You look tired. >  
-----------------
       \   ^__^
        \  (oo)\&#95;&#95;&#95;&#95;&#95;&#95;&#95;
           (__)\       )\/\
               ||----w |
               ||     ||

コンテナのイメージ化には、下記コマンドを使う。

docker commit container名 リポジトリ/名前  
docker commit cowsay test/cowsayimage  
sha256:77fc978facce2f9693b5a1e610916538c7b79fee942f963939f2d62154bfc54c  

それを実行するには、今度はイメージ名を指定すれば良い。

レジストリ

このイメージをアップロードする。まずdocker hubのアカウントを作っておく。

docker push bruwbird/cowsay