Dockerとは何?


最近、Dockerのコミュニティがとても発展しています。それは、どうしてでしょうか。皆一緒に理解していきましょう。

Dockerとは何?食べることができますか?

もちろん、食べることができませんね。大体皆知ってるように、開発の中では色々問題があります。一つの問題は開発環境です。それで、開発環境の件、DockerはContainer(独立Container)でアプリを管理します。

Dockerの構造

Dockerの特徴
何でもContainer化することができます。
私たちのシステムがContainerに孤立します?

  • 環境開発をするように、DockerContainerをインストールします。
  • アプリの具体設計(設計自由)
  • 内部のネットワークやContainerとContainer

どうすれば? Dockerをインストールするには、以下のリンクを参考にします。
https://docs.docker.com/engine/installation/

IMAGE

具体的には、IMAGEがLinux OS を梱包します。Dockerの中に、Dockerfileがあります、このファイルの目的はなんでしょうか。そのファイルは新たにImageを立てる。Dockerfileの中に、いろいろなlayerがある、でも、最高layerはいつも OSである。

例えば
PHP-FPM 7.0のDockerfile見ると、Debian (debian:jessie)のOS Image を継承して、あと、PHP-FPM をインストールします。あと、ダウンロードをして、Imageになった。
https://github.com/docker-library/php/blob/0792ba42f0ea7435ceb26b42a066274e028b30e3/7.0/fpm/Dockerfile

IMAGEを設計して、何が面白いか。

  • 他のImageから継承することができます。
  • アップロードとシェアは簡単です。
  • https://store.docker.com/ でほとんど何もありますね。

また、他のIMAGEを利用する際に、Docker Storeでpullをします。

docker pull <イメージの名前>

Containerは何?

ContainerはOSと関係のlibraryとアプリを包む。
どうすれば、新たなContainerをつくれますか。
ImageからContainerを作っています。

docker run <イメージの名前>

Containerを作りましたあと、docker exec でこのContainerを対応しています。

例えば

 docker exec -it <containerの名前> bash

その中で

i (interactive): OSのterminalにアクセスします。
t (#): stdoutに表示される

Containerとcontainerをインタラクティブする際に、network、volume等が必要です。
例えば

nginx: 80番ポートを開くと、 clientからアクセスすることができます。
php-fpm: 9000番ポートを開くと、 nginxとproxyをコネクトします。
mysql: 3306番ポートを開くと、DBをコネクトすることができます。

結論

  • Microserviceに適当である。
  • 資源がかかることの減る。
  • 環境開発の方が早くて、安全である。

参考リンク
https://docs.docker.com/