[Docker]EC2インスタンス上でDockerを使う[超基礎編]

前回は[Docker]EC2インスタンス上でDockerを使う[準備編]ということで、EC2インスタンス上でdockerとdocker-composeをインストールしました。
本日はまずDockerの基本的な動作を試したいと思います。
今日の先生はドットインストール先生です!!
ちなみにdocker-composeは今回触れずに次回の記事でまとめます。

 

Dockerのイメージを入手する

Dockerを使うためにはコンテナを作成する元となるイメージが必要です。
イメージは大体は公開されているものを拾ってきたり、自分で自由にカスタムして使うことになると思います。
主に使うことになるのはDocker Hubになると思います。
Docker Hubで目的のサービスのイメージを検索することができます!

 

ちなみにコンソール上で操作するときは、docker searchコマンドでイメージを検索できます。

$ sudo docker search [検索したいサービス]

 

そして目的のイメージはdocker pullコマンドでダウンロードできます。

$ sudo docker pull [ダウンロードしたいイメージ名]

今回は$ sudo docker pull centos と入力。
↓そのまんまcentosって名前を指定して打つと公式のイメージっぽい?

 

イメージの一覧はdocker imagesで確認できます。

$ sudo docker images

 

イメージの内容を確認するにはdocker inspectコマンドを使います。
まぁ、今中を見てもまだどういうことが書かれてるのかわかりませんが・・・。

$ sudo docker inspect [見たいイメージのIDか名前]

↓IDとか指定するときは被りがなければ最後まで書く必要は無いみたいです。

 

もし不要なイメージがある場合はdocker rmiコマンドで削除できます。

$ sudo docker rmi [削除イメージのIDか名前]

↓やっぱりIDとかは被りがなければ最後まで書かなくて良いみたいですね!

 

 

コンテナを起動する

いよいよコンテナの起動をしてみます。
コンテナの起動コマンドはdocker runになります。

$ sudo docker run [実行イメージのIDか名前]

なんですが、ここで$ sudo docker run centos と打ってみると何も起こりません。
いいえ、厳密には何か起こったのですがそれがあまりに一瞬のため終わってしまいました。
具体的にはcentosイメージが正常に立ち上がり正常に終了を迎えました。

このままでは確認が出来ないので、ドットインストール先生の例で上げているechoを使う例を見てみます。

$ sudo docker run centos echo “Hello World”

↓実際にはcentosではなくIDを指定しています。無事に世界に挨拶できました。

 

ちなみに実行中のコンテナを確認するのはdocker psコマンドを使います。

$ sudo docker ps

が、既にコンテナの動作は正常終了してしまっているため何も表示されません。

 

既に動作が完了しているコンテナの一覧を取得するには-aオプションを使います。

$ sudo docker ps -a

↓いっぱいでてきましたね(笑)

 

終了済みのコンテナが蓄積するのは容量圧迫をしたり何か悪さをするかもしれません。
不要なコンテナを削除するにはdocker rmコマンドを使います。

$ sudo docker rm [削除したいコンテナのID]

ですが今回のように複数の不要なコンテナがある場合、いちいち削除するのは面倒ですね。
そんなときは以下のコマンドで一気にコンテナを削除できるようです。

$ sudo docker rm `docker ps -a -q`

docker psで出てきたリストをdocker rmするってことですかね!
たしかにこれは便利だ!!

ちなみにコンテナを起動するときに下記のように書くと、コンテナの実行が終了したときに自動的にコンテナを破棄します。

$ sudo docker run –rm [実行イメージのIDか名前]

 

コンテナの操作

オプションに-i と -t を指定するとそのままコンテナの中で操作ができるようです。
終わったらコンテナの破棄もしたいので–rmも付けておきます。

$ sudo docker run –rm -it [実行イメージのIDか名前]

実際にcentosのイメージを指定したものがこんな感じです。
たしかに実際に操作が出来ていますね。exitで抜けられました。

今回は継続的に動作を行うコンテナを動かしていないので触れませんが、バックグランドで動作させてるコンテナをフォアグランド側に表示させるdocker attacheコマンドや、コンテナを停止させるdocker killコマンド、停止しているコンテナを実行させるdocker startコマンドなど基本的なコマンドがあるようですね!

↓自分のメモのためでもあるのでひと括りにしちゃいます。

# バックグラウンドで動いているコンテナを手前に持ってくる
# sig-proxyの部分は受信したシグナルをプロセスに全てプロキシさせない
# sig-proxyがtrueだとコンソールで打ったコマンドが全部コンテナに飛んじゃうってことだね!
$ sudo docker attache –sig-proxy=false [対象のID]

# どうやらstopでもいいみたい?
$ docker kill [対象のID]

# 停止してたコンテナのスタート
$ docker start [対象のID]

attacheしてきたプロセスはCtrl + Cで戻れるのですが、sig-proxyがtrueだとこのコマンドがコンテナ側にもいっちゃうっぽいです。そのため、不必要にプロセスを停止させてしまったり、意図しない動作を誘発する恐れがあります。
ちなみにいろんなサイトで「–sig-proxy=falseはおまじないだよ☆」って言っていました。
理由は把握したので、つまりそういうもんなんだなって思っておきます。

 

おわりに

dockerにはまだまだ操作のためのコマンドがたくさんあるんでしょうね!
でもこれに関しては必要に応じて調べながら使いこなしていけばよいでしょう。
ずっとコマンドを試してたらいつまでたっても先に進めませんからね!
ということで次回はdocker-compose使ってみますよ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)