Docker チュートリアル

現状

Dockerは聞いたことあるけど実際に使ったことはない。

ゴール

チュートリアルを通してDockerでweb serverを立ち上げてみる

Dockerとは

Docker - Wikipedia

コンテナ型の仮想化環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。

ふむ。

イメージとは

An image is a lightweight, stand-alone, executable package that includes everything needed to run a piece of software, including the code, a runtime, libraries, environment variables, and config files.

イメージは、コード、ランタイム、ライブラリ、環境変数、設定ファイルなど、ソフトウェアを実行するために必要なすべてを含む軽量でスタンドアロンの実行可能パッケージです。

コンテナとは

A container is a runtime instance of an image—what the image becomes in memory when actually executed. It runs completely isolated from the host environment by default, only accessing host files and ports if configured to do so.

コンテナはイメージのランタイムインスタンスです。イメージが実際に実行されたときにメモリに格納されます。デフォルトではホスト環境と完全に分離されており、ホストファイルとポートにアクセスするように設定されている場合にのみアクセスします。

つまりは、イメージ(パッケージ)を使ってコンテナ(実態)を作成するようだ。

MacにDockerをインストールする

Docker For Mac | Docker

Docker for Mac is the best way to get started with Docker on a Mac.

MacでDockerを使う最高の方法らしい。とりあえずこれを使ってDockerを導入してみることにする。

まず以下から、Get Docker for Mac (Stable) をダウンロード&インストール

Install Docker for Mac | Docker Documentation

インストールしたらDocker for Macを起動する

f:id:tic40:20180112190046p:plain

nginx web serverを立ち上げてみる

$ docker run -d -p 80:80 --name webserver nginx

http://localhost/ にアクセスして、"Welcome to nginx!" ページが表示されればOK.

docker ps でwebserver コンテナの詳細を確認する

$ docker ps
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1d5a3d6f77d9        nginx               "nginx -g 'daemon of…"   24 seconds ago      Up 24 seconds       0.0.0.0:80->80/tcp   webserver

先程起動した、webserver の詳細が表示される。

起動した webserver コンテナにログインする

docker exec -it webserver bash

コンテナの停止/削除

# 停止する
$ docker stop webserver
# 再度開始する
$ docker start webserver

停止したコンテナは、docker ps では表示されない。停止したコンテナ詳細を表示する場合は、docker ps -a で表示する。

停止と削除を同時に行う場合は、docker rm -f webserver を実行する。このコマンドはコンテナを削除するが、nginx imageは削除しない。docker imagesを実行することでローカルイメージのリストを表示できる。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              3f8a4339aadd        2 weeks ago         108MB

イメージを削除する場合は、docker rmi nginx で削除ができる。

雑感

  • とりあえず一旦ここまで。
  • まだわかってないこと
    • Dockerfile ファイルの書き方
    • docker-compose について
    • どういう単位でコンテナを分割すればいいか