断片

です・ます調が記事によって違ったりするブログ

Dockerのセットアップ

DockerでApache2を起動するまでの自分用メモ.
自分用なのでQiitaとかの入門用記事を適当にまとめただけ.
環境は以下の通り

$cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"
$uname -mr
Linux 3.13.0-100-generic x86_64

Dockerのインストール

$wget -qO- https://get.docker.com/ | sh
$sudo usermod -aG docker $USER

2行目は現在のユーザをdockerグループに追加している.dockerを実行するには(ソケットファイルにアクセスするためには),rootかdockerグループに 所属している必要があるので,必要であれば追加する.毎回sudoを付けて実行するのであれば追加する必要なし.
インストール後にバージョンを確認した.バージョンは以下の通り

$ docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64

イメージとコンテナの操作

イメージを検索する(今回はubuntu14.04のイメージに関する検索).
$docker search ubuntu:14.04

イメージを取得する.
$docker pull ubuntu:14.04

手元のイメージ一覧を表示する.
$docker images

イメージを実行する(コンテナを作成する).
$docker run -i -t ubuntu:14.04 /bin/bash
フォアグラウンドモードで起動する場合は-i,-tオプションと/bin/bashを指定する.これを指定すると実行した端末でコンテナが操作できるようになる.詳しくは参考リンクのリファレンスを参照.今回はホストの8080番ポートからコンテナの80番ポートへフォワーディングしたいので,以下のようにする.
$docker run -p 8080:80 -it ubuntu:14.04 /bin/bash

実行中のコンテナを表示する.
$docker ps

実行中のコンテナへ入る.
$docker exec -it [コンテナID] /bin/bash

実行中のコンテナを停止する.
$docker stop [コンテナID]

停止中のコンテナを開始する.
$docker start [コンテナID]

コンテナを削除する.
$docker rm [コンテナID]
ちなみに以下のシェルスクリプトでコンテナを一斉削除できる.
$docker ps -a | awk '{print $1}' | tail -n +2 | xargs docker rm

イメージを削除する.
$docker rmi [イメージID]

コンテナを複製(コミット)する.
$docker commit [コンテナID] イメージ名

Dockerfileを書く

以下の様なDockerfileを作り,buildコマンドを実行すると,apache2がデフォルトでインストールされていて80番ポートが解放されているubuntu14.04イメージ(webserver)が生成される.

$mkdir -p docker/ubuntu1404
$cd docker/ubuntu1404
$touch Dockerfile
$vim Dockerfile

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get -y install apache2

EXPOSE 80

$docker build -t webserver .

おわりに

以上のように操作すると,ホストの8080番ポートへアクセスすればApache2のindex.htmlが表示されるはず.Apache2の起動時に「Could not reliaby determine the server's fully qualified domain name...」出てコケた場合はServrerNameに使用したアドレス(127.0.0.1等) によってFQDNのエラーが発生している.そのため,/etc/apache2/apache2.confにServerNameを追加し,そのServerNameを/etc/resolv.confによって解決させる.

参考リンク

Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 17.06.Beta ドキュメント
DockerのUbuntu14.10の日本語化環境イメージを作成(Ubuntu) | BROKENDISH
http://d.hatena.ne.jpg.com/entry/2014/10/09/002750
http://inaz2.hatenabloa2chan/items/e9aa408244687a63a0ae
http://qiita.com/tif/Kazuhira/20150628/1435482419
Dockerでcommitしてみる - Qiita
[docker] コンテナを一括削除 - Qiita
Dockerコンテナの作成、起動〜停止まで - Qiita
起動中の docker コンテナのシェルに入る - Qiita
[Docker] ubuntu 14.04/16.04にDockerをインストール - Qiita
Dockerでapacheを動かす - Rhythm & Biology
Dockerコンテナへの入り方 - あるシステム管理者の日常
Apacheのエラー:Could not reliably determine the server’s fully qualified domain name… | Weblogy