現状
Dockerは聞いたことあるけど実際に使ったことはない。
ゴール
チュートリアルを通してDockerでweb serverを立ち上げてみる
Dockerとは
コンテナ型の仮想化環境を提供するオープンソースソフトウェアである[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 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を起動する
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 について
- どういう単位でコンテナを分割すればいいか