参考資料:LinuCの学習にも使える、 ブラウザで動かす クラウドLinuxハンズオン

2021年7月31日開催のOSC 2021 Online/Kyotoで実施するハンズオンセミナーの参考資料になります。

セミナー終了後、後日YouTubeのOSPN.jpチャンネルにセミナー動画が公開されますので、そちらの資料としてもご活用いただけます。

コンソールが使えるようになるまで

KatacodaのUbuntu 20.04プレイグラウンドを使用しますので、以下のサイトにアクセスして「Ubuntu 20.04 Playground」の「Start Scenario」をクリックしてください。

https://www.katacoda.com/courses/ubuntu

インスタンスが無事起動すると左側に「Hello World」が表示されます。「Hello World」表示が邪魔な場合は、右のコンソール画面との境目をクリックしたまま左にドラッグすると縮小されます。最も縮小された場合はStepsという表示のみになります。

右上角にある設定アイコンをクリックするとテキスト表示が拡大されたプレゼンモードになります。

以上の作業で使いやすいコンソールになると思います。

試しにLinuxのコマンドを試してみましょう。

pwd, ls -l /,date, locale, ip a, など

ちなみに、KatacodaのUbuntuインスタンスは、root(管理者権限)でのログインが標準になります。コンソールが$マークのみだと状態がわかりにくいのでユーザーを切り換えます。

su - packer
packer@host01:~$
id

ハンズオンで実施するコマンド

各種情報の確認

システム情報を表示

uname –a

catコマンドでLinux OSのバージョンを表示

cat /etc/os-release
cat /proc/version 

ホスト名設定コマンドでカーネル情報を確認

hostnamectl
hostnamectlコマンドについて

hostnamectlはサブコマンドなしに実行するとホスト名と関連情報を表示できます。 Virtualizationの項目がkvmになっているはずです。KVMはLinuxの代表的な仮想化ソリューションです。このインスタンスが仮想で動作していることが確認できます。

アプリのインストール

システムアップデート

sudo apt update

ジョークアプリのインストールと実行

3つのジョークアプリをインストールして実行します。何が起こるかはお楽しみ。

sudo apt install sl figlet cmatrix
sl
figlet OSC2021 Kyoto
cmatrix

余裕があったらslアプリのオプションも実行。

slのオプション

sl -a
sl -l
sl -F

サーバアプリケーションのインストール

Apacheのインストールと起動確認

sudo apt install apache2
systemctl status apache2

起動が確認できたらメニューバーの+アイコンのクリックで使えるWebプレビュー(View HTTP port 80 on Host 1)でApacheが動作していることを確認。

Document Rootにindex.hmlファイルを配置し表示

画面上部のIDEをクリックするとVS Codeが起動します。New Fileでindex.htmlを作成し、以下のコードをコピペします。VS Codeを使わない場合はviで作成してもOK。

HTML
<html>
<head>
<meta charset="utf-8">
<title>Katakodaで作ったWebサイト</title>
</head>
<body>
<h1>私のホームページへようこそ!</h1>
<p>ここはクラウド環境で構築したWebサイトです。</p>
</body>
</html>

作成したindex.htmlをDocument Root(/var/www/html/)に配置します。

(VS Codeで作成した場合の一例)
$ sudo ls /root
index.html
$ sudo cp /root/index.html /var/www/html

Webプレビューのウインドウを再読み込みして、index.htmlファイルの内容が表示されるかを確認します。

Dockerでコンテナを動かす

sudoを使わずにDockerを実行する設定

sudoコマンドで実行するのが面倒なので、dockerグループへpackerユーザーを登録します。一度exitしてpackerユーザーでログインし直します。

sudo usermod -aG docker $USER
exit
su - packer

Dockerのバージョン確認

docker -v
docker version
docker info

Dockerの起動確認

­systemctl status docker

コンテナの動作確認

旧体系

(ubuntu)
docker run docker/whalesay cowsay hello-OSC-Kyoto
docker run docker/whalesay cowsay hello-Linux
docker run -it --name cent701 centos:7 /bin/bash
(centos)
cat /etc/os-release
uname -a
exit
(ubuntu)
docker ps -a
docker images

新体系

(ubuntu)
docker container run docker/whalesay cowsay hello-OSC-Kyoto
docker run docker/whalesay cowsay hello-Linux
docker container run -it --name cent702 cantos:7 /bin/bash
(centos)
cat /etc/os-release
uname -a
exit
(ubuntu)
docker container ls -a
docker image ls

Apacheコンテナをバックグラウンドで起動

旧体系

旧体系ではApacheの公式コンテナをバックグラウンドで実行します。apa01という名前でコンテナを生成し、ローカルの8081番ポートをコンテナの80番ポートに接続するオプションを指定します。

起動が確認できたらメニューバーの+アイコンのクリックで使えるWebプレビュー(Select port to view on Host 1)で8081番を指定し、Apacheが動作していることを確認。

docker run -itd --name apa01 -p 8081:80 httpd
docker ps

新体系

新体系ではapa02という名前でコンテナを生成し、ローカルの8082番ポートをコンテナの80番ポートに接続するオプションを指定します。

起動が確認できたらメニューバーの+アイコンのクリックで使えるWebプレビュー(Select port to view on Host 1)で8021番を指定し、Apacheが動作していることを確認。

docker container run -itd --name apa02 -p 8082:80 httpd
docker container ls

隔離されているApacheコンテナのindex.htmlを変更する

ディレクトリを2つ作成して、区別が付くようににindex.htmlファイルを作成します。

­mkdir web1 web2 && echo Web1 Works! > web1/index.html && echo Web2 Works! > web2/index.html

docker cpコマンドでコンテナ内の指定ディレクトリにindex.htmlを配置

docker cpコマンドを使えば隔離されているコンテナ内にファイルをコピーすることができます。

docker cpコマンドの後に、ホストOS側のファイルを指定し、続けてコピーしたいコンテナのディレクトリを指定します。

docker cp web1/index.html apa01:/usr/local/apache2/htdocs/ 
docker cp web2/index.html apa02:/usr/local/apache2/htdocs/

­Webプレビューでそれぞれのポートを指定して動作確認

8081番の方が「Web1 Works!」、8082番が「Web2 Works!」が表示されていればOK。

隔離されているコンテナにホストOS側からファイルをコピーできることが確認できます。

コンテナの動作状況をグラフィカルに確認

メニューバーのVisualHostをクリックするとWeaveScopeが起動し、コンテナの動作状況をグラフィカルに確認できます。