ホーム DoRuby Docker を試してみる(2)

Docker を試してみる(2)

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Docker を試してみる(1) の続きです。

超基本ですが重要な run & exec コマンドの説明です。

 runコマンド

dockerの中で一番大事なコマンドです。コンテナを起動しコマンドを実行します。

オプションが非常にたくさんありますがリソースの設定が多いので覚えるのは少しだけ。

–nameコンテナの名前を指定する
-it標準入力を開き仮想端末を割り当てる。シェルを使うときに使う
-dバックグラウンドでコンテナを実行する。サーバとして使うときなど
-e環境変数を指定する
-pポートフォワーディングする。ホスト->コンテナ
–rm実行が終わったら コンテナを削除する
-vボリュームを割り当てる。ホストのディスクをコンテナで使いたいときに使う

実行例)

コンテナ上でシェルを実行する

対話型シェルを起動します。# のプロンプトはシェルに接続した状態です。

exitでコンテナと切断し、コンテナは終了します。終了後コンテナは削除されます。

$ docker run -it --rm ubuntu bash
root@92e455bcb613:/# 

なお、ubuntuコンテナは、コマンド省略時はbashを起動するようになっているので、

bashをつけなくても結果は同じです。

$ docker run -it --rm ubuntu
root@92e455bcb613:/# 

コマンドのみ実行する

プロセスを表示させてみます。psコマンドが実行されコンテナは終了します。終了後コンテナは削除されます。

$ docker run --rm ubuntu ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  25968  1236 ?        Rs   09:27   0:00 ps aux

サーバとして実行する

memcachedサーバとして起動します。DockerHubのmemcachedイメージを使います。

次のコマンドでは memcached というコンテナ名でサーバを起動します。

16進数のIDを出力するのみでコマンドは終了します。

$ docker run -d --name memcached memcached
b40a0f915d7ade1b6ad91c7cc9b2257da1013c21ff61821cc1a59d597b9f734b

docker ps コマンドで実行状況を確認すると実行されていることが確認できます。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
a40a0f915d7a        memcached           "/entrypoint.sh memca"   About a minute ago   Up 59 seconds       11211/tcp           memcached

コンテナを停止するには stop コマンドを使います。さらにコンテナを削除する場合は rmコマンドを使います。

$ docker stop memcached
$ docker rm memcached 

ポートフォワーディングする

ホストのアプリからmemcachedを使いたい、別のホストから接続したいときはポートフォワーディングを行います。

次のコマンドは ホストの11212ポートからコンテナの11211(memcachedのポート)に転送します。

$ docker run -d --name memcached -p 11212:11211 memcached
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
ec0da0dc6aba        memcached           "/entrypoint.sh memca"   5 seconds ago       Up 4 seconds        0.0.0.0:11212->11211/tcp   memcached

上記の出力の、

0.0.0.0:11212->11211/tcp 

任意の接続元からホストの11212ポートへのアクセスを許可し、コンテナの11211ポートへの転送を許可します。

ホストから memcached に接続してみます。

$ telnet localhost 11212
set foo 0 60 3
bar
STORED
get foo
VALUE foo 0 3
bar
END

 execコマンド

runコマンドと同様にコンテナ上でコマンドを実行しますが、

こちらは起動中のコンテナに対してのみ実行可能です。

$ docker exec memcached ps axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
memcache     1  0.0  0.2 313740  2228 ?        Ssl  09:43   0:00 memcached
memcache    14  0.0  0.1  17492  1136 ?        Rs+  09:54   0:00 ps axu
記事を共有

最近人気な記事