LoginSignup
23
21

More than 5 years have passed since last update.

さくらとコンテナの夕べ(第1回) Docker/Arukas入門ハンズオン資料

Last updated at Posted at 2016-10-31

概要

Nginx コンテナの作成・実行と、Docker Hub へのアップロード、Arukas へのデプロイを通し、Dockerコンテナのライフサイクルを理解します。

以下ハンズオンでは「さくらのクラウド」を利用していますが、CentOS 7 をご利用可能な環境であれば、どこでもお試しいただけます。

1. さくらのクラウドにログイン

1.1. ブラウザでコントロールパネルを表示

https://secure.sakura.ad.jp/cloud/

1.2 接続情報を確認

配付資料に含まれるログイン情報を入力し、ログインします。

2. 仮想サーバの起動と接続

2.1 さくらのクラウドで仮想サーバを起動

 1. 【 さくらのクラウド(IaaS 】をクリックします。
 2. メニュー【 サーバ 】から【 追加 】をクリックします。
 3. ディスクイメージは【 CentOS 7.2 64bit 】を使います。
 4. 「サーバプラン」と「ディスクプラン」を選択します(※今回は変更しません)。
 5. 【 管理ユーザのパスワード 】で root パスワードを設定します。8文字以上の「アルファベット」「数字」「記号」の組み合わせが必要です。
 6. ホスト名を【 docker 】、作成数【 1 】として【 作成 】ボタンをクリックします。
 7. 確認画面では【 作成 】をクリックします。
 8. サーバ追加作業が完了するまで待ちます。起動後は【 閉じる 】をクリックします。
 9. メニューの【 サーバ 】をクリックし、作成したサーバ「 docker 」を確認します。

2.2. 仮想サーバへ接続

 1. IP アドレスを確認します。インターフェースを右クリックし【 IP アドレスをコピー 】します。
 2. Tera Term やターミナルなどを開き、対象サーバに SSH でログインします。
- ログイン時のIDは「root」、パスワードは作成時に入力したもの
- ターミナルでは「ssh -l root 」か「ssh root@」

ssh -l root <IP_addr>

3. Docker Engine のセットアップ

3.1 安定版(stable)の最新バイナリをセットアップ

 1. パッケージ情報を最新に更新します。

yum -y update

 2. Docker の yum リポジトリを利用可能にします。

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

 3. docker-engine パッケージをセットアップします。

yum -y install docker-engine

3.2. docker サービスの有効化とデーモン起動。

 1. サービスを有効化します。

systemctl enable docker.service

 2. docker デーモンを起動します。

systemctl start docker.service

 3. バージョン番号を確認します。

docker version

補足情報

もっと簡単なセットアップ用コマンド

curl -fsSL https://get.docker.com/ | sh
systemctl enable docker.service
systemctl start docker

Docker の削除

yum -y remove docker-engine
rm -rf /var/lib/docker

4. docker コマンドの基本操作

4.1. hello-world コンテナの実行とイメージ確認

 1. docker run コマンドでコンテナを実行します。

docker run hello-world

 2. docker ps コマンドで、コンテナの状態を確認します。

docker ps -a

 3. docker images で、ローカル上のイメージを一覧表示します。

docker images

4.2. Ubuntu コンテナの実行

 1. docker pull コマンドで ubuntu 公式イメージを取得します。
 2. ダウンロードしたイメージを docker images で確認します。

docker images

 3. ubuntu コンテナを実行します。

docker run -i -t ubuntu:latest /bin/bash

 4. Ubuntu のバージョンを確認します。

cat /etc/issue

 5. ps コマンドを実行します。コンテナ実行時の「/bin/bash」のPIDが「1」なのを確認します。

ps -ef

 6. コンテナを終了します。

exit

5. Nginx イメージを作成

5.1 Nginx コンテナを実行

 1. nginx:latest コンテナを起動します。

docker run -itd -p 80:80 nginx:latest

 2. ブラウザの URL に仮想サーバの IP アドレスを入力します。nginx の初期ページが表示されます。

5.2 nginx コンテナ上にページを作成

 1. docker ps で Nginx コンテナのコンテナ ID(CONTAINER ID)を確認します。

docker ps

 2. docker exec コマンドで bash の追加プロセスを実行。

docker exec -it $(docker ps -ql) /bin/bash

 3. ps -ef コマンドで、nginx コンテナの中での操作を確認。

ps -ef

 4. Nginx のドキュメント・ルートにある index.html を書き換えます。

echo 'hello world' > /usr/share/nginx/html/index.html
cat /usr/share/nginx/html/index.html

 5. ブラウザで表示を確認します。「Shift」キーを押しながら再読み込みボタンを押すと、画面に hello world が表示されます。
 6. bash を終了します。

exit

5.3. Nginx イメージの作成

 1. docker commit コマンドで mynginx:1.0 イメージを作成します。

docker commit $(docker ps -ql) mynginx:1.0

 2. docker images コマンドで、イメージが作成されたのを確認します。

docker images

 3. 作成した mynginx:1.0 イメージを使って、新しいコンテナを実行します。

docker run -d -p 8080:80 mynginx:1.0

 4. curl コマンドで、コマンドライン上でポート 8080 を開きます。

curl http://localhost:8080

5.4 Dockerfile でイメージの自動構築

 1. 作業用ディレクトリ mynginx を作成し、移動します。

mkdir mynginx
cd mynginx

 2. 次のコマンドを実行し、 Dockerfile を作成します。

tee ./Dockerfile <<-'EOF'
FROM nginx:latest
RUN  echo "hello world<br />$(date)" > /usr/share/nginx/html/index.html
EOF

 3. docker build コマンドで mynginx:1.1 イメージを自動作成します。

docker build -t mynginx:1.1 .

 4. docker images コマンドで、イメージが作成されたのを確認します。

docker images

 5. 作成した mynginx:1.1 イメージを使って、新しいコンテナを実行します。

docker run -d -p 8888:80 mynginx:1.1

 6. curl コマンドで、コマンドライン上でポート 8888 を開きます。

curl http://localhost:8888

5.3 コンテナの停止と削除

 1. docker ps でコンテナの状態を確認します。

docker ps

 2. コンテナを停止するため docker kill コマンドを実行します。

docker kill $(docker ps -q)

 3. docker ps では実行中のプロセスはありませんが、 docker ps -a でコンテナが停止中なのを確認します。

docker ps
docker ps -a

 4. docker rm こコマンドでコンテナ(コンテナ用のイメージ・レイヤとメタ情報)を削除します。

docker rm $(docker ps -aq)
docker ps -a

6. Docker Hub にログイン

6.1 アカウント作成

https://hub.docker.com/ から登録し、ログインします。

6.2 サーバから Docker Hub にログイン

docker login コマンドを実行します。

# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <自分のDockerHubID>
Password: <パスワード>
Login Succeeded

7. Docker イメージの登録と公開

7.1. イメージをタグ付け

 1. docker tags コマンドで mynginx:1.1 イメージに Docker Hub ID の情報を付けます。

docker tag mynginx:1.1 <自分のID名>/mynginx:1.1

 2. docker images で確認します。

docker images

7.2. docker push でイメージ送信。

 1. docker push コマンドでイメージを送信します。

docker push <自分のID名/mynginx:1.1>

 2. Docker Hub 上にある自分のページを表示し、リポジトリを確認します。

7.3. 不要なイメージの削除

 1. docker images -q を実行すると、ローカルにあるイメージ ID を表示します。

docker images -q

 2. docker rmi で全てのイメージを削除します。

docker rmi -f $(docker images -aq)

8. Arukas にログイン

9. Arukas で実行

  1. アプリ作成 ボタンをクリック。
  2. アプリ作成に必要な各種情報を入力。
  3. App Name … myapp
  4. Image … <DockerHubId>/mynginx:1.11.1 のタグを忘れずに
  5. Port … 80
  6. アプリケーションを作成 ボタンをクリック。
  7. 画面が切り替わり、一覧に myapp が表示されます。
  8. アプリの 起動 ボタンをクリック
  9. 起動確認で OK をクリックし、 アプリが起動するまで待ちます。
  10. 起動(緑色に変化)したら、 Endpoint の URL を開きます。

以上です。おつかれさまでした!

23
21
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
23
21