2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerをサンドボックスにする(ubuntu16.04にapacheの環境構築をする例)

Posted at

※ サンドボックスとして環境構築や動作検証をしたいケースには役立ちますが、実運用時は別の記事を参考にしてください。

ホストOSと同様の操作で環境構築を何度でも試せて、フレームワーク同士の競合を回避できるサンドボックスとして Docker を利用する方法を紹介します。

ベースイメージからコンテナを作成

--privileged をつけて /sbin/init を起動コマンドにすることで、systemctlが利用可能になります。

sudo docker run --privileged -d --name con -p 8080:80 ubuntu:16.04 /sbin/init

コンテナに入る

sudo docker exec -it con bash

必要なものをインストールする

コンテナの中で実行します。

apt update
apt upgrade -y
apt install -y vim git curl apache2 mariadb-server mariadb-client  

apacheを起動する

systemctl start apache2

コミットしてコンテナをイメージ化する

念の為、環境が壊れたときにコンテナを即座に作り直すためのイメージを作っておきます。

※ run 時の起動コマンドに /sbin/init を指定しているため、exitしてもコンテナは起動したままです。

exit

ホストOSで

sudo docker commit con con

コンテナを作り直す

環境構築に失敗してコンテナを作り直す場合は、下記のコマンドを実行します。

sudo docker rm -f con
sudo docker run --privileged -d --name cake -p 8080:80 con /sbin/init 

起動したら、再度apacheを起動してから環境構築に挑みます。

疎通確認

ホストOSのブラウザで http://localhost:8080/ にアクセスして、ページが表示されれば成功です。

記事を書いた理由

Googleで apache の構築手順を調べると、「httpd イメージを使ってみよう!」「docker-composeを使って〜」みたいな記事が多いです。

既存のイメージを使えばすぐに構築できますし、運用上は docker compose などを使って1プロセス1コンテナにすることで個別に最新バージョンにアップデートできるなどの利点はありますが、求めているものがそうでないことも多々あります。

例えば、自分はこのフレームワークってどんなものだろう?という単純な疑問が出たときに、その都度ホストOSを汚していたらキリがありません。だから仮想環境を使います。
とはいえ、そのフレームワーク以外の知識が求められるのが不便
でならないという思いを何度もしてきました。

それを少しでも解消できればなぁと思いながら書きました。
少しでも気楽に環境構築ができる人が増えることを願っています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?