概要
Nginx コンテナの作成・実行と、Docker Hub へのアップロード、Arukas へのデプロイを通し、Dockerコンテナのライフサイクルを理解します。
以下ハンズオンでは「さくらのクラウド」を利用していますが、CentOS 7 をご利用可能な環境であれば、どこでもお試しいただけます。
1. さくらのクラウドにログイン
1.1. ブラウザでコントロールパネルを表示
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 で実行
-
アプリ作成
ボタンをクリック。 - アプリ作成に必要な各種情報を入力。
- App Name …
myapp
- Image …
<DockerHubId>/mynginx:1.1
←1.1
のタグを忘れずに - Port …
80
-
アプリケーションを作成
ボタンをクリック。 - 画面が切り替わり、一覧に
myapp
が表示されます。 - アプリの
起動
ボタンをクリック - 起動確認で
OK
をクリックし、 アプリが起動するまで待ちます。 - 起動(緑色に変化)したら、
Endpoint
の URL を開きます。
以上です。おつかれさまでした!