Windows10でDocker Toolboxを使っています。
Dockerのアップデート
今のバージョンを確認します。
$ docker -v
Docker version 1.12.2, build bb80604
まずDocker Toolbox自体をアップデートさせます。ここからWin用をダウンロードして実行したらできると思います。
$ docker -v
Docker version 17.03.0-ce, build 60ccb22 なんだこれは全然違う。半年も経ってないのに。
$ docker version
Client:
Version: 17.03.0-ce
API version: 1.24 (downgraded from 1.26)
Go version: go1.7.5
Git commit: 60ccb22
Built: Thu Mar 2 01:11:00 2017
OS/Arch: windows/amd64
Server:
Version: 1.12.2
API version: 1.24 (minimum version )
Go version: go1.6.3
Git commit: bb80604
Built: Tue Oct 11 17:00:50 2016
OS/Arch: linux/amd64
Experimental: false
Client/Serverのバージョンのようです。ちょっと前までは、docker -vとやるとサーバのバージョンが出てたけど、今はクライアントのバージョンがでているようです。
Dockerの使い方概要
Docker Hubからdockerイメージを探して、docker pullでイメージをダウンロードして、docker runでコンテナを作成・実行します。
Docker Hub
ここにDocker Hubがあります。沢山イメージがあります。
dockerイメージを落とす
docker pullコマンドでイメージをローカルに落とせます。docker pull rubyとやるとrubyのイメージがダウンロードされます。このrubyは何かというと、ここにあります。ruby:2.4.1というように、[:]の後にタグをつけることもできます。タグは、基本バージョンになります。latestというタグを使うと、最新版をpullできます。
$ docker pull ruby:latest
dockerイメージ一覧を確認する
docker imagesコマンドで、ローカルのイメージ一覧が確認できます。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ruby latest d2cee8adb148 5 days ago 678 M
コンテナを作成・実行する
docker runコマンドでコンテナを作ります。コマンドの使い方は下記です。
コンテナ名rubyのrubyイメージのコンテナを作成する場合下記になります。
$ docker run --name ruby ruby:latest
-i オプションをつけると、標準入力が開きます。rubyコンテナの標準入力を開いたらirbが起動しました。一度docker runで作成・実行したコンテナは、処理が終わるとすぐに停止しますが、コンテナとしては停止中の状態で存在しています。よって、再度上記docker runコマンドを実行すると下記のようなエラーになります。docker runコマンドはコンテナが存在しない状態で新たに作成する際に使用するコマンドです。
Error response from daemon: Conflict. The name "/ruby" is already in use by container 8504a9a10098ff4a5f3b680adc74ba625a3b39dd6cc332485d96d9cbbdac951f. You have to remove (or rename) that container to be able to reuse that name.
停止中のコンテナを再実行する場合は、docker startコマンドを利用します。使い方は下記になります。コンテナIDは、次のdockerコンテナの一覧を表示させるとCONTAINER IDというのが確認できます。
先程のrubyコンテナの標準入力を開く場合は、下記のようにします。
$ dcoker start -i ruby
dockerコンテナの一覧を確認する
docker psコマンドを使います。-a オプションを使うと停止中コンテナも表示されます。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8504a9a10098 ruby:latest "irb" 2 minutes ago Exited (0) 50 seconds ago ruby
dockerコンテナを削除する
docker rmコマンドを使います。削除対象を指定するには、コンテナ名かコンテナIDを使います。
$ dcoker rm ruby