Skip to content

Latest commit

 

History

History
74 lines (57 loc) · 3.36 KB

docker.md

File metadata and controls

74 lines (57 loc) · 3.36 KB

Dockerとは?

Dockerの概要

🐳 Dockerとは、コンテナを動かすためのオープンソースソフトウェアです。
コンテナの中身(Dockerイメージ)を作る仕組みや、コンテナの実行環境を提供しています。

Dockerイメージとは、コンテナとして動かすOSとアプリケーションをまとめたものです。
軽量でどこでも同じように動くという特徴があるため、アプリケーションを配布するのに向いています。
Docker Hub というWebサイトがあり、様々なDockerイメージが公開されています。

container_as_a_service

Dockerイメージを作ってみよう

Dockerfileを使えば、Dockerイメージを簡単に作ることができます。
ベースとなるイメージを指定し、イメージを作るために必要なコマンドを記述します。
例えば、 Ubuntu 上で hello-world.rb というスクリプトを動かすコンテナを考えます。
Rubyをインストールして、スクリプトをコンテナに追加するだけで完成です。

  • hello-world.rb
    puts "Hello World!"
  • Dockerfile
    FROM ubuntu:16.04
    
    RUN apt-get update && \
        apt-get -y upgrade && \
        apt-get -y install ruby
    
    ADD hello-world.rb .
    
    CMD ruby hello-world.rb
$ docker build -t hello-world .
$ docker run hello-world

コンテナを組み合わせて使うには?

Dockerでは、メンテナンス性を高めるために、コンテナで実行する機能を小さくしようと言われています。
例えばWebアプリケーションの場合、アプリ用のコンテナと、データベース用のコンテナは分けることが多いです。
このように複数のコンテナで構成されるサービスを動かしたいときに便利なのが Docker Compose です。
Docker Composeを使うことで、複数のコンテナを一度に起動できるだけでなく、依存関係の解決もしてくれます。
(先にデータベース用のコンテナを起動してから、アプリ用のコンテナを起動するなど。)

起動するコンテナとその設定は docker-compose.yml というYAML形式のファイルに記述します。
例えば webdatabase というコンテナを起動する場合は、以下のような内容になります。
web では8080番ポートが接続され、カレントディレクトリが /code にマウントされます。
また、 web が依存する database が先に起動されます。

version: '2'
services:
  web:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - "$PWD:/code"
    depends_on:
      - database
  database:
    image: mysql