導入
導入したPCがWindowsのため、Windowsをベースに説明します。
まずはこちらからインストーラをダウンロードし、インストールします。
インストールすると、Docker Quickstart Terminal
というショートカットができます。
※2016-07-20追記:Docker Toolboxなるものが出たようで、上記リンクをそちらに変更しました。
ログイン
Docker Quickstart Terminal
を起動すると、コマンドプロンプトが立ち上がります。
直接、docker
コマンドを打ってもいいですし、
$ docker
Usage: docker [OPTIONS] COMMAND [arg...]
A self-sufficient runtime for linux containers.
Options:
-D, --debug=false Enable debug mode
-d, --daemon=false Enable daemon mode
-H, --host=[] Daemon socket(s) to connect to
-h, --help=false Print usage
-l, --log-level=info Set the logging level
・
・
・
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the Docker version information
wait Block until a container stops, then print its exit code
Run 'docker COMMAND --help' for more information on a command.
$
または、boot2docker ssh
コマンドでVMにログインしてから、docker
コマンドを使うこともできます。
$ boot2docker ssh
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.6.2, build master : 4534e65 - Wed May 13 21:24:28 UTC 2015
Docker version 1.6.2, build 7c8fca2
docker@boot2docker:~$
Dockerイメージからのサーバ作成
dockerイメージからサーバを作ってみます。仮にcentosをベースにサーバを作るとします。その場合、docker search
コマンドを使うと簡単にdockerイメージを見つけることができます。
docker@boot2docker:~$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 1094 [OK]
tutum/centos Centos image with SSH access. For the root... 13 [OK]
blalor/centos Bare-bones base CentOS 6.5 image 9 [OK]
torusware/speedus-centos Always updated official CentOS docker imag... 6 [OK]
million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 5 [OK]
jdeathe/centos-ssh CentOS-6 6.6 x86_64 / EPEL Repo. / OpenSSH... 3 [OK]
layerworx/centos A general CentOS 6 image with the EPEL6 an... 2 [OK]
jdeathe/centos-ssh-mysql CentOS-6 6.6 x86_64 / MySQL. 2 [OK]
pdericson/centos Docker image for CentOS 0 [OK]
nathonfowlie/centos-jre Latest CentOS image with the JRE pre-insta... 0 [OK]
野良Dockerイメージも多数いるとの情報もあるため、(企業で使う場合であれば特に)公式のイメージを使いましょう。今回はOFFICIALフラグが立っている「centos」を使います。
では早速。
docker@boot2docker:~$ docker pull centos
latest: Pulling from centos
c852f6d61e65: Pull complete
7322fbe74aa5: Already exists
f1b10cd84249: Already exists
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:a4627c43bafc86705af2e8a5ea1f0ed34fbf27b6e7a392e5ee45dbd4736627cc
Status: Downloaded newer image for centos:latest
docker@boot2docker:~$
そして、、、
docker@boot2docker:~$ docker run -i -t --name guest centos:latest /bin/bash
[root@557d34c7c799 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@557d34c7c799 /]#
これでサーバが作成され、ログインできました。簡単すぎます。exit
でログアウトできます。
一度ログアウトしてしまっても、docker start
からのdocker attach
で再度ログインすることができます。しかし、docker start
やdocker attach
する際には、コンテナIDなるものが必要です。コンテナIDはdocker ps
で調べられます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
あれ?何も表示されないと驚いた方。docker ps -a
と打ってみてください。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
557d34c7c799 centos:latest "/bin/bash" 24minutes ago Exited (0) 15 minutes ago guest
・
・
・
表示されました。これはコンテナは存在するけど停止している状態です。コンテナを起動する際にはdocker start [コンテナID]
と打ちます。
え??コンテナID??この10桁以上の乱数みたいなやつ??
コンテナIDをいちいち入力するのが面倒かと思いますが、コンテナIDを一意に特定できるところまで入力すればOKです。地味にこの仕様、個人的にはイケてます。
$ docker start 557
557
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
557d34c7c799 centos:latest "/bin/bash" 30 minutes ago Up 17 seconds guest
docker ps -a
ではなく、docker ps
で無事にコンテナが表示されました。さらにコンテナにログインするには、docker attach [コンテナID]
と打ちます。
$ docker attach 557
[root@557d34c7c799 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
無事にCentOSにログインできました。
Dockerfileを使ってみる
Dockerfileのメンテナンス性を考えると、「boot2docker ssh」ではなく、「docker」コマンドを使うことの方が多いです。
(続く・・・)