頭弱いがPCの勉強する

正真正銘のPC初心者。勉強ノートのつもり。
ITなんてトンチンカン、だから書くことやること全部適当。

Docker使ってみました

2018-03-03 12:30:25 | Linuxの勉強
以前から使ってみたいと思っていました、そう思ったまま一年経っていたDockerをようやく触ることができました。
勉強会でDockerとリバースプロキシを用いてマルチドメインを実装するのを見たので、自分もやってみました。

まずDockerとはなにか
Dockerとはコンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。
従来の仮想環境はホスト型もハイパーバイザー型もゲストOSは必要でしたが、コンテナ型仮想環境であるDockerは違います。
ホストOSのカーネルを利用した仮想環境を構築し、別マシンが動いているかのように動かすことができるのでメモリやリソースが従来より少量ですみます。
Dockerによって起動された仮想マシンはコンテナと呼ばれます。
コンテナはコードによって構築することが可能なので、コードを記したファイルを用いれば同じ環境をすぐさま構築することができます。

基本操作
・docker pull イメージ名
dockerではpullコマンドでイメージをダウンロードできます。
ダウンロードしたイメージを指定して起動すれば簡単に用意されていた環境を起動することができます。

・docker run イメージ名
pullでダウンロードしたイメージファイルを元に仮想環境を構築します。
各種オプションを付けることで様々な設定をすることができます。


今回はAWS EC2でやります。
ホスト環境
ubuntu16.04
docker
nginx←リバースプロキシとして

コンテナ1(A.com)
apache

コンテナ2(B.com)
apache

本当はCentOSでやりたかったんですがAWSの無料枠だとなかったんで、今回はubuntuです。
RHELもいいかと思ったんですが、docker-ceがインストールできなかったので。
今回はdockerとnginxはインストールされている&二つのドメインの登録済という前提で進めます。

1.Dockerイメージの取得
今回コンテナとして使うのはapacheなのでapacheイメージを取得します。
# docker pull httpd
取得できたか確認するため、取得イメージを一覧表示します。
# docker images

2.Dockerネットワークの作成
コンテナの属するネットワークを定義します
# docker network create --subnet=192.168.30.0/24 user_defined_nw


3.Dockerコンテナの作成
イメージを元にコンテナを作成します。
コンテナ1
# docker run -d --name server1 -p 80 --net=user_defined_nw --ip=192.168.30.101 -v /var/www/html1:/usr/local/apache2/htdocs httpd

# docker run -d --name server2 -p 80 --net=user_defined_nw --ip=192.168.30.102 -v /var/www/html2:/usr/local/apache2/htdocs httpd

各オプションについて説明します。
・-d
コンテナをバックグラウンドで動作させます。
・--name 名前
コンテナに名前を付けることができます。これによりコンテナIDだけでなく名前でも操作可能になります。
・--net=ネットワーク名
先ほど作成したネットワークグループを指定し、そこへ所属します。
・--ip=IPアドレス
コンテナのIPアドレスをしていします。
・-v /var/www/html:/usr/local/apache2/htdocs
ホストOSの「/var/www/html」をコンテナ内の「/usr/local/apache2/htdocs」にマウントします。
今回はwww下にhtml1とhtml2を作成し、それぞれに割り当てています。
・httpd
コンテナイメージの指定です。指定したイメージを元に起動します。


4.nginxの設定
マルチドメインにするための設定ファイルを新規作成します。
# vi /etc/nginx/sites-available/web_serverA
内容:
server {
server_name A.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
location / {
proxy_pass http://192.168.30.101;
}
}

# vi /etc/nginx/sites-available/web_serverB
内容:
server {
server_name B.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
location / {
proxy_pass http://192.168.30.102;
}
}

5.nginxの設定の有効化
sites-enabled下にシンボリックリンクを作成し設定を有効化します
# sudo ln -s /etc/nginx/sites-available/web_serverA /etc/nginx/sites-enabled/
# sudo ln -s /etc/nginx/sites-available/web_serverB /etc/nginx/sites-enabled/
そしてサービスの再起動
#systemctl restart nginx

/var/www/html1と/var/www/html2にそれぞれ違うhtmlファイルを用意し、二つのURLでアクセスしてそれぞれ違うページが表示されれば成功です。


最新の画像もっと見る

コメントを投稿