LoginSignup
2

More than 3 years have passed since last update.

Dockerとは何?

Last updated at Posted at 2017-11-21

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

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

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

Dockerの構造
Screen Shot 2017-11-19 at 10.46.48 PM.png

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/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2