はじめに
本文書を参照頂きありがとうございます。
この文書は社内勉強会に向けた文書である為、一部期待値と異なる表現、記載がある場合がありますので、ご利用になられる際はその辺りも加味して頂いてご利用下さい。
Dockerイメージの導入(nginx)
前回まででDocker環境をRaspberry Piに構築し、HelloWorldイメージの実行まで実施しました。
今回はnginxのイメージを導入してみます。
参考URL:https://hub.docker.com/r/tobi312/rpi-nginx/
※nginxは最近人気のWebサーバです。( https://ja.wikipedia.org/wiki/Nginx )
pi@raspberrypi:~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 618e43431df9 5 months ago 1.64kB
pi@raspberrypi:~ $
pi@raspberrypi:~ $ docker pull tobi312/rpi-nginx
Using default tag: latest
latest: Pulling from tobi312/rpi-nginx
dc95218aa9a9: Pull complete
08105d289242: Pull complete
943cb8ac165f: Pull complete
2bcf02afc443: Pull complete
c6e1574200da: Pull complete
d52d57d897d4: Pull complete
9a065381e3e0: Pull complete
Digest: sha256:8e71f57b18e3cb093d6b5a58b5c4c0ef463c5c47be5332d0af3ff042e474add5
Status: Downloaded newer image for tobi312/rpi-nginx:latest
pi@raspberrypi:~ $
pi@raspberrypi:~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tobi312/rpi-nginx latest 7fb0435a7b74 5 weeks ago 168MB
hello-world latest 618e43431df9 5 months ago 1.64kB
pi@raspberrypi:~ $
下記のコマンドでnginxを起動します。
pi@raspberrypi:~ $ docker run --name nginx -d -p 80:80 tobi312/rpi-nginx
63623a2ed45192063dd06022e03fbf3c066c85c781b8fe2285d48df3dd753286
http://IPアドレス
でnginxのスタートアップ画面が表示されました。
数秒、、、は言い過ぎですが、
数分でWebサーバの導入、起動が完了です。
Dockerイメージの導入(PostgreSQL)
参考URL:https://hub.docker.com/r/tobi312/rpi-postgresql/
イメージを取得します。
pi@raspberrypi:~ $ docker pull tobi312/rpi-postgresql:9.6
9.6: Pulling from tobi312/rpi-postgresql
7da8358bc620: Pull complete
40208d212647: Pull complete
8d55d8b6ecff: Pull complete
3620a34fc408: Pull complete
b823367bf6c3: Pull complete
eaad29dc0d6b: Pull complete
932dfb4f2773: Pull complete
1edf78336a12: Pull complete
74f0bc52ab1c: Pull complete
d37629a3d04e: Pull complete
3189bef8ed49: Pull complete
bc2336cbf38e: Pull complete
e768b84089c2: Pull complete
ebf4e3bf65e4: Pull complete
ea1142ebf907: Pull complete
09b0d86104a5: Pull complete
Digest: sha256:038c592d4e7691bc4ed9fc84258b2c3e4c36816f63a4740a7c6c3a0a177ba654
Status: Downloaded newer image for tobi312/rpi-postgresql:9.6
稼働用のワークディレクトリを作成します。
pi@raspberrypi:~ $ mkdir -p /home/pi/.local/share/postgresql
イメージを起動します。
pi@raspberrypi:~ $ docker run --name pgsql -d -p 5432:5432 -v /home/pi/.local/share/postgresql:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres tobi312/rpi-postgresql:9.6
a9c0c8cb8595199f8cdbd671f5a0522862f36996068daee1c663815a34ce8cb2
正常に起動したようです。
pi@raspberrypi:~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9c0c8cb8595 tobi312/rpi-postgresql:9.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5432->5432/tcp pgsql
Raspberry Piのpsコマンドでもプロセスが確認できます。
pi@raspberrypi:~ $ ps -ef | grep postgres
999 1069 1052 0 08:15 ? 00:00:00 postgres
999 1234 1069 0 08:15 ? 00:00:00 postgres: checkpointer process
999 1235 1069 0 08:15 ? 00:00:00 postgres: writer process
999 1236 1069 0 08:15 ? 00:00:00 postgres: wal writer process
999 1237 1069 0 08:15 ? 00:00:00 postgres: autovacuum launcher process
999 1238 1069 0 08:15 ? 00:00:00 postgres: stats collector process
pi 1321 1253 0 08:24 pts/1 00:00:00 grep --color=auto postgres
その他のDockerイメージ
好きなものを取り寄せて起動してみましょう。
ここではCentOSを取得してみます。
pi@raspberrypi:~ $ docker pull centos:centos7
ここでrunしてみます。
pi@raspberrypi:~ $ docker run -it -d --name centos7 centos:centos7
・・・で、この後色々あって放置していました。
取得したのは大分前なので、現在の状態を確認します。
pi@raspberrypi:~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7 9f38484d220f 5 months ago 202MB
居ました、現在は停止しています。
pi@raspberrypi:~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c33197a449f6 centos:centos7 "/sbin/init" 13 days ago Exited (255) 11 days ago
起動してみます。この時指定するのはCONTAINER ID。
pi@raspberrypi:~ $ docker start c33197a449f6
c33197a449f6
サクッと上がったので、状態を確認してみます。
pi@raspberrypi:~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c33197a449f6 centos:centos7 "/sbin/init" 13 days ago Up 3 seconds TEST
無事に起動していました。
続いて、起動したCentOSへログインしてみます。
# 起動したCentOSへログイン
pi@raspberrypi:~ $ docker exec -it c33197a449f6 bash
[root@c33197a449f6 /]#
[root@c33197a449f6 /]# hostname
c33197a449f6
[root@c33197a449f6 /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@c33197a449f6 /]#
redhat-releaseファイルを確認して、立ち上がっているコンテナが間違いなくCentOSであることを確認しました。
Dockerを操作するコマンド
Dockerを操作するコマンドは沢山あるのですが、以下の参考リンクと共にご紹介しておきます。
※ご参考:Dokerコマンド一覧
番号 | コマンド | 用途 |
---|---|---|
1 | pull | Dockerイメージを取得する |
2 | run | DockerイメージからDockerコンテナを作成する |
3 | exec | Dockerコンテナ上のコマンドを実行する |
4 | push | DockerイメージをDockerレジストリに送る |
5 | images | Dockerホスト上のDockerイメージの一覧を表示する |
6 | build | DockerイメージをDockerfileに基づいて作成する |
7 | start | 停止中のDockerコンテナを起動する |
8 | stop | 起動中のDockerコンテナを停止する |
9 | rm | 停止中のDockerコンテナを削除する |
10 | rmi | Dockerホスト上のDockerイメージを削除する |
11 | kill | 起動中のDockerコンテナを強制停止する |
12 | ps | Dcokerホスト上のDockerコンテナ一覧を表示する |
13 | login | Dockerレジストリにログインする |
14 | logout | Dockerレジストリからログアウトする |
15 | commit | Dockerコンテナの変更状態から新しいDockerイメージを作成する |
16 | cp | Dockerコンテナとローカルファイルシステムの間でファイル/ディレクトリコピーを行う |
17 | logs | Dockerコンテナのログを取得する |
18 | save | Dockerイメージの内容をtarアーカイブとして出力する |
19 | load | tarアーカイブからDockerイメージを読み込む |
20 | tag | 既存のDockerイメージから新しいDockerイメージ名を作成する |
21 | history | Dockerイメージの生成履歴を表示する |
※Dockerコマンド応用編
全コンテナ停止: docker stop $(docker ps -q)
全コンテナ削除: docker rm $(docker ps -q -a)
全イメージ削除: docker rmi $(docker images -q)
という感じです。
第02回、お疲れ様でした。