Dockerとは?
コンテナ技術をベースに開発された仮想化技術です。
仮想化技術には仮想マシンとコンテナの2種類がありますが、コンテナは仮想マシンに比べて軽量であるというメリットがあります。
ハイパーバイザ型の仮想マシン
実行環境ごとに個別のOS(ゲストOS)を用意します。
ex) VirtualBoxなどコンテナ
1つのOS上に、他プロセスから隔離したアプリケーション実行環境を構築しています。
仮想マシンやゲストOSがないので、軽量です。
Dockerの基本操作
Dockerでよく使うコマンドの使い方を簡単に説明していきます。
今回紹介するコマンドは次の7つです。
- pull
- images
- ps
- create
- start
- attach
- rm
Linuxを動かしてみよう
実際にコンテナをAlpine LinuxというLinuxのディストリビューション(配布形態)を使って、操作してみます。
pullコマンドでイメージを取得する
docker pull alpine
dockerのコマンドpull
をすることでalpine
のイメージをdocker Hub
上から持ってくることができます。
imagesコマンドで取得したイメージを確認する
「docker Hub
からもってきたイメージが見当たらないんだけど!」
もちろん、ちゃんとdockerで確認のためのコマンドimages
が用意されています。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 9 days ago 1.84kB
alpine latest 3f53bb00af94 2 weeks ago 4.41MB
images
コマンドを使うと、このように取得したイメージの情報を一覧で表示してくれます。
runコマンドでコンテナを起動する
それではいよいよコンテナを起動してみましょう!
run
コマンドは
- create:コンテナの作成
- start:コンテナの起動
を一緒にやってくる便利なコマンドです。
docker run イメージ コンテナで起動するコマンド
で実行時できます。
$ docker run alpine echo hogehoge
hogehoge
psコマンドで実行中のコンテナを確認する
psは実行中のコンテナを確認しましょう。
echo
コマンドは実行後そのまま終了してしまうので、インタラクティブにコマンドを入力できる-it
をrun
のオプションにつけて、実行してみます。
$ docker run -it alpine /bin/sh
/ # ls
bin etc lib mnt root sbin sys usr
dev home media proc run srv tmp var
/ #
こんな感じで対話的にLinuxのコマンドを入力できます。
現在、コンテナは実行状態にあります。
この状態で、もう1つターミナルを用意して、そこでps
コマンドを実行してみます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc86a6156b6c alpine "/bin/sh" 4 minutes ago Up 2 minutes hopeful_cocks
ちゃんとコマンド/bin/sh
が実行中になっています。
stopコマンドでコンテナを停止する
もちろん、このままコンテナをほったらかしておくわけにもいきません。
stop
コマンドで実行を停止しましょう。
docker stop コンテナID
で停止できます。
$ docker stop fc86a6156b6c
fc86a6156b6c
インタラクティブにコマンド入力を受け付けていたターミナルを確認すると、dockerのコマンド入力を受け付ける状態に戻っています。
startとattachコマンドで停止したコンテナを再び操作する
stop
コマンドで停止したコンテナはstart
コマンドでコンテナを起動することができます。
dokcer start コンテナID
$ docker start fc86a6156b6c
fc86a6156b6c
コンテナを起動したはずなのに、先ほどのコマンド入力を受け付けるモードになっていませんね。
本当にコンテナが起動したのかps
コマンドで確認してみましょう。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc86a6156b6c alpine "/bin/sh" 23 minutes ago Up 30 seconds hopeful_cocks
ちゃんとコンテナは起動していますね。
実は、コンテナを起動しただけではこのようにコンテナを操作できないのです。
そこで使うのがattach
コマンドです。
docker attach コンテナID
これを実行すれば再びコンテナを操作することができます。
$ docker attach fc86a6156b6c
/ # ls
bin etc lib mnt root sbin sys usr
dev home media proc run srv tmp var
/ #
rmコマンドでコンテナを削除する
作成したコンテナを削除したいときに使うのがrm
コマンドです。
docekr stop コンテナID
docker rm コンテナID
rm
コマンドを使う場合は、コンテナを停止してから実行する必要があります。
コンテナを停止している状態では、便利ですが、実行中にコンテナを削除したいときは、ちょっとめんどくさいですよね。
実はショートカットキーCtrl-C
でコンテナの停止と削除を一緒に行うことができるのです。
これはシェルのコマンドの強制終了の方法と同じなので、シェルを使えれば、感覚的にこのショートカットキーを使えるかもしれませんね。