Help us understand the problem. What is going on with this article?

Dockerでコンテナを操作してみよう

More than 1 year has passed since last update.

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コマンドは実行後そのまま終了してしまうので、インタラクティブにコマンドを入力できる-itrunのオプションにつけて、実行してみます。

$ 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でコンテナの停止と削除を一緒に行うことができるのです。
これはシェルのコマンドの強制終了の方法と同じなので、シェルを使えれば、感覚的にこのショートカットキーを使えるかもしれませんね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away