これは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