こんにちは、鈴木です。
最近のホットな技術と言えば Docker ですね!
と言いつつ使ったことが無かったので Docker 入門しました!
コンテナ?仮想技術?それは何?何が良いの?と色々な疑問を少しずつ明らかにしていきたいと思います。
まずは Docker 公式サイトのチュートリアル
Docker の公式サイトには、ブラウザで Docker の基本的な操作を体験できるチュートリアルがあります。
「Docker やってみようかな・・。どうしようかな・・。」と迷っている方は、チュートリアルを触ってみましょう!
以下のページの「Start The Tutorial」というボタンを押すと Docker のチュートリアルが始まります。
「Docker Engine Parts」と書かれた項目は概要的な説明です。
「Assignment」と書かれた項目は「これをやってみましょう!」というミッションなので、内容を良く読んでから、コンソールにコマンドを打ってみましょう。
「Show the Answer」をクリックすると答えが表示されてしまうのでいきなりクリックせずに、「Tips」に書かれているヒントを手掛かりに問題を解いていきます。
AWS で Docker を試す
チュートリアルはすぐに終わってしまうので、実際に Docker をインストールして動かしてみましょう。
AWS を利用すると動作環境の構築や破棄が手軽にできるので、実験用の EC2 インスタンスを作成します。
AWS で EC2 インスタンスを立ち上げる
AWSでEC2インスタンスを立ち上げます。OS は Amazn Linux として進めます。
EC2 インスタンスが立ち上がったら SSH でログインし、Docker をインストールします。
1 |
sudo yum install -y docker |
Docker のデーモンを起動する
インストールできたら Docker のデーモンを起動します。
1 |
sudo service docker start |
これで Docker が使える状態になりました。
まずはヘルプを表示する
まずはヘルプを表示しましょう。
1 |
sudo docker help |
こんな感じでヘルプが出力されるはずです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use A self-sufficient runtime for linux containers. Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from the containers filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or Login to the docker registry server logs Fetch the logs of a container port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from the docker registry server push Push an image or a repository to the docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image in the docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the docker version information wait Block until a container stops, then print its exit code |
何はともあれヘルプを表示する方法を知っておくことは大切だと思います。
チュートリアルのイメージを取得する
Docker 公式サイトのチュートリアルで使用していたイメージを取得してみましょう。
1 |
sudo docker pull learn/tutorial |
イメージの一覧を確認します。
1 |
sudo docker images |
以下のように取得したイメージ(learn/tutorial)が表示されるはずです。
1 2 |
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE learn/tutorial latest 8dbd9e392a96 15 months ago 128 MB |
Hello Docker する
取得したイメージ(learn/tutorial)でコマンドを実行してみます。
1 |
sudo docker run learn/tutorial echo Hello, Docker! |
「Hello, Docker!」と表示されれば成功です。
ping をインストールする
Docker 公式サイトのチュートリアルに倣って、ping をインストールしてみましょう。
※取得した learn/tutorial は Ubuntu なので apt-get で ping をインストールします。
1 |
sudo docker run learn/tutorial apt-get install -y ping |
docker help run で確認すると分かるのですが、上記コマンドは「コマンドを新しいコンテナで実行する」という処理になります。
docker ps -l を実行するとコンテナの一覧を表示することができます(オプションの -l は --latest=true と同じで最後に作成されたコンテナを表示します。-a または --all=true を指定すると全てのコンテナを表示することができます)。
1 2 |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b103b483a4c0 learn/tutorial:latest apt-get install -y p 11 seconds ago Exited (0) 8 seconds ago mad_pasteur |
この結果の「CONTAINER ID(最初の列)」の値「b103b483a4c0」はすぐに使うので注目しておいてください。
イメージを保存する
Docker 公式サイトのチュートリアル通りに、新しいイメージ learn/ping として保存しましょう。
docker ps -l で確認したコンテナ ID (の先頭 4 文字でOK)を引数に、docker commit を実行します。
1 |
sudo docker commit bl03 learn/ping |
これで新しいイメージ learn/ping として保存することが出来ました。確認してみましょう。
1 |
sudo docker images |
以下のように最初に取得した learn/tutorial と、今作成した learn/ping が表示されるはずです。
1 2 3 |
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE learn/ping latest db20ab55211e About an hour ago 139.5 MB learn/tutorial latest 8dbd9e392a96 15 months ago 128 MB |
ping を実行する
それでは新しく作成したイメージ上で ping を実行してみましょう。
1 |
sudo docker run learn/ping ping www.techscore.com |
ping の結果は返ってきたでしょうか?
まとめ
Docker 公式サイトのチュートリアルを参考に、AWS 上に立ち上げた EC2 インスタンス(Amazon Linux)で Docker を実行しました。
とりあえず動かしたというレベルですが、まずは最初の一歩を踏み出すことが出来ました。