LoginSignup
14
25

More than 5 years have passed since last update.

Dockerを触ってみよう ~初心者向けDockerハンズオン~ Ver20170118

Last updated at Posted at 2017-01-18

これは2017年1月18日での「Dockerを触ってみよう ~初心者向けDockerハンズオン~」の補助資料です。

1.「さくらのクラウド」上でサーバを立てる。

  • 「さくらのクラウド」のサーバを作成する。
  • CentOS 7を利用する。
  • Windowsの人はPuttyやTeratermを利用する。
    • Macの人は、ターミナルを利用する
    • ssh root@IPアドレスでログイン可能。

2. CentOS7でDockerをインストールする。

パッケージ情報を最新にする。
yum -y update

docker-engine パッケージをセットアップします。
curl -fsSL https://get.docker.com/ | sh

サービスを有効します。
systemctl enable docker.service

docker デーモンを起動します
systemctl start docker

インストールしたらバージョンの確認
docker version

3. コンテナを起動する「Docker run」

まずは「hello-world」を起動する。
docker run hello-world

Ubuntuコンテナを起動しUbuntuを操作する。
docker run -it ubuntu bash

Ubuntuのバージョンを確認いたします。
cat /etc/issue

3.1 起動したubuntuにcurlを利用できるようにする

まずはUbuntuのアップデートを行う。
apt-get -y update
apt-get -y install curl
curl ifconfig.me/ip

exitで、コンテナから出られる。
exit

再度コンテナを動かしてみる。
docker run -it ubuntu bash

再びIPアドレスを入れようとしても動かない
curl ifconfig.me/ip

4. バックグランド(デタッチドモード)でコンテナを動かす

今の時刻を毎秒表示するコンテナを起動する
docker run jpetazzo/clock

バックグランド(デダッチドモード)でコンテナを動かす
docker run -d jpetazzo/clock

5. 基礎的なDockerコマンド

6. docker psでコンテナの確認

docker ps

docker ps -aで今まで起動したコンテナを確認
docker ps -a

「docker ps -l」で直近に操作したコンテナを表示し「docker ps -q」でコンテナのショートIDが表示される。
docker ps -l
docker ps -q

6.1 docker logsでコンテナのログを確認する

先ほどバックグランドで動かしたコンテナのログを見る。ここでは
docker logs(コンテナのID)

ログの指定された数行だけを見る
docker logs --tail 3 (コンテナのID)

リアルタイムでログを確認する。
docker logs --tail 1 --follow (コンテナのID)

6.2 docker kill、docker stopでコンテナを止める

デタッチモードで起動したサーバを停止させるには下記のコマンドでとめる。
docker kill (コンテナのID)
docker stop (コンテナのID)

6.3 停止したコンテナを確認する。

「docker ps」で先ほど止めたコンテナがないか確認
docker ps

「docker ps -a」で先ほど止めたコンテナを確認する。
docker ps -a

7. Docker上でGhostをインストールする

ここでは簡易ブログツール「Ghost」をDockerを利用してインストールしてみます。
docker run -p 80:2368 -d ghost

ブラウザに作成したサーバのIPアドレスを入力してアクセスができるか確認し、アクセスができるようであれば、コンテナを止める。
docker kill (コンテナのID)

8. nginxコンテナを立ち上げてページを編集する。

8.1 nginxを起動

下記コマンドでnginxを起動
docker run -itd -p 80:80 nginx:latest

起動後にブラウザからIPアドレスを入力してnginxの画面を表示し、正常にnginxが起動しているか確認をする。

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

docker psでnginxのコンテナIDを確認
docker ps

docker exec コマンドで bash の追加プロセスを実行。
docker exec -it $(docker ps -ql) /bin/bash

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

Nginx のドキュメント・ルートにある index.html を書き換えます。
echo 'hello world' > /usr/share/nginx/html/index.html
cat /usr/share/nginx/html/index.html

ブラウザで表示を確認します。ブラウザの再読み込みボタンを押すと、画面にhello worldが表示されます。(うまく表示できない場合は「Shift」キーを押しながら再読み込みボタン)

bashを終了する
exit

8.3 Nginx イメージの作成

docker commit コマンドで mynginx:1.0 イメージを作成します。
docker commit $(docker ps -ql) mynginx:1.0

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

作成した mynginx:1.0 イメージを使って、新しいコンテナを実行します。
docker run -d -p 8080:80 mynginx:1.0

curl コマンドで、コマンドライン上でポート 8080 を開きます。
curl http://localhost:8080

8.4 コンテナの停止と削除

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

 コンテナを停止するため docker kill コマンドを実行します。
docker kill $(docker ps -q)

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

 docker rm コマンドでコンテナ(コンテナ用のイメージ・レイヤとメタ情報)を削除します。
docker rm $(docker ps -aq)
docker ps -a

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

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

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

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

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

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

作成した mynginx:1.1 イメージを使って、新しいコンテナを実行します。
docker run -d -p 8888:80 mynginx:1.1

curl コマンドで、コマンドライン上でポート 8888 を開きます。
curl http://localhost:8888

10 Docker Hub にログイン

10.1 アカウント作成

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

10.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

11 Docker イメージの登録と公開

11.1 イメージをタグ付け

 docker tags コマンドで mynginx:1.1 イメージに Docker Hub ID の情報を付けます。
docker tag mynginx:1.1 <自分のID名>/mynginx:1.1

 docker images で確認します。
docker images

11.2 docker push でイメージ送信。

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

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

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

11.3 不要なイメージの削除

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

`docker images -q`

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

`docker rmi -f $(docker images -aq)`

11.4 Arukas にログイン

11.5 Arukas で実行

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

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

17 おまけ

17.1 DockerでWordPressを動かす

WordPressのイメージを持ってくる
docker run wordpress

MySQLのイメージを持ってくる。
docker pull mysql

MySQLの設定
docker run --name mysql -e MYSQL_ROOT_PASSWORD=(パスワード) -d mysql

WordPressを動かす
docker run --name wordpress2 -d --link mysql:mysql -p 80:80 wordpress

17.2 Docker composeでロケットチャットを動かす

Docker composeでRocket.Chatを動かす
下記2つのコマンドでDocker composeをインストール
curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-uname -s-uname -m> /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

上記のコマンドでyamlをこのページから取ってくる。
git clone https://github.com/zembutsu/sakura-cloud-hands-on.git

作成されたフォルダに移動する。
cd sakura-cloud-hands-on/rocketchat

Rocket.Chatに必要なファイルを取ってくる
docker-compose pull

下記コマンドでRocket.Chatを動かす
docker-compose up -d

14
25
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
14
25