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