ディストリビューション : CentOS7
アプリケーション : Docker docker-ce-18.03.1
Dockerとはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである
筆者が感じた使用用途としては、開発環境、WEBアプリケーション等「アプリケーション単位」で仮想化を行う目的であれば有意義なものであると感じたが、これをハイパーバイザー(vmware, KVM等のマシーン仮想化)と置き換えて運用をすることには疑問が生じる。想定されている利用目的が違うにも関わらず、vmwareやKVMと比較されているサイトが多いのは少々疑問を感じた。
基本的には仮想OS上からDockerを起動し、そのうえでApacheのコンテナの起動や、MySQLのコンテナの起動になるかと思います。メリットとしたら、「アプリケーションの管理がしやすくなるかも」「セキュリティーを確保しやすくなるかも」。デメリットとしたら、現時点のCentOS標準ではない「iptables」で運用しなければならない?、作業量が増える、管理の手間が増える少し触った感じではこのように感じた。
要は使い方次第なのかな。
ここでは、簡単な内容でDockerのインストールからApacheの起動までを記載する。
正解なやり方が非常に分かりずらい、コマンドオプションの順番を間違えてもエラー発生しない等々、なのでこれから作業する内容をまずは箇条書きで示す。コマンド以外の管理方法は、「docker compose」「GUI管理ツール」を利用した方法もある。
作業方法に関しては色々な情報があるので一つの参考例とする。
1. DockerリポジトリーからCentOSをダウンロード
2. CentOSイメージからコンテナを作成
3. 作成したコンテナにApacheをインストール
4. Apacheがインストールされたコンテナをイメージに変換
5. コンテナのポート80をローカルのポート80にバインドして起動
Dcokerインストール
yum-config-manager --enable docker-ce-test yum-config-manager --disable docker-ce-edge yum install docker-ce yum-config-manager --disable docker-ce-stable
iptableインストール
systemctl stop firewalld.service systemctl disable firewalld.service yum -y install iptables-services systemctl start iptables.service systemctl enable iptables.service
Dockerが自動でポートフォワーディングの設定を追加するのでiptableを操作することはありません。また、Dockerをインストールすると「docker0」のブリッジインターフェイスが追加されています。
最新のCentOSのイメージをDocker公式リポジトリからダウンロード
docker pull centos
イメージ一覧
docker images
イメージ削除
docker rmi イメージID
コンテナ起動
docker run -i -t centos /bin/bash
コンテナのターミナルから「exit」でコンテナを終了
Ctrl+p, Ctrl+qでコンテナを中断
コンテナ終了
docker stop コンテナID
コンテナ再起動
docker start コンテナID
コンテナ接続
docker attach コンテナID
起動しているコンテナの確認
docker ps
終了しているコンテナの確認
docker ps -a
コンテナ削除
docker rm コンテナID
コンテナを起動したら、「システムアップデート」「Apacheのインストール・設定」作業を済ませます。systemctlでサービスの起動はしないが、サービスの有効は行う。 systemctl enable httpd.service
イメージの作成(Apache:httpd)
docker commit コンテナのID centos/httpd
特権をつけて起動
docker run --privileged -d -p 80:80 --name httpd centos/httpd /sbin/init
特権&マウントして起動
docker run --privileged -d -p 80:80 -v /root/htdocs/:/var/www/html/ --name httpd centos/httpd /sbin/init
Docokerは常にコンテナが消える要因があるので外部にデータを保存する。
コンテナの起動方法は非常に曖昧のような気がする、とりあえず上記内容であれば正常に動作はするが、このような記事もある。がしかし、どのオプションが最低限必要なのか?エラーが発生しないので現在調査中である。しかし、大体の使い方が分かれば次へ進めることができるのでDockerの記事を随時更新することとします。
コマンドでの管理は非常に面倒なので流石にGUIでの管理がいいのかもしれない。
1. Rancher(WEBベース)
2. Portainer(WEBベース)
3. kitematic(Mac、Windows用 Electronベース)