第3章 Red Hat CDK Vagrant Box との対話
vagrant up
コマンドを使用して Red Hat CDK Vagrant box を作成し、設定した後に、vagrant
コマンドを使用して実行中の仮想マシンと対話できます。vagrant-adbinfo
プラグインを使用すると、Vagrant box 内で実行される Docker サービスと対話できるようにホストのワークステーションをセットアップできます。
3.1. Vagrant コマンドラインインターフェースの使用
Vagrant のコマンドラインインターフェースは、実行中の仮想マシンを照会し、仮想マシンとそれらの box の両方を管理するためのコマンドの基本セットを提供します。
- 環境の状態の照会
vagrant status
- すべてのアクティブな環境の状態の照会
vagrant global-status
- box で実行されているシステムの停止
vagrant halt
- box のシステムの初期状態へのリセット
vagrant destroy
- box のシステムのシャットダウンなしの一時停止
vagrant suspend
- 一時停止システムの再開
vagrant resume
- 実行中のシステムへのログイン
vagrant ssh
上記およびその他のコマンドの詳細については、Vagrant ドキュメントの「Command-Line Interface」を参照してください。
3.2. adbinfo Vagrant プラグインの使用
vagrant-adbinfo
プラグインを使用すると、仮想マシンで実行される Docker サービスについての情報を取得できます。以下のコマンドを実行してホストシステム (ご使用の開発ワークステーション) に設定する必要のある環境変数を表示し、ホストベースのツール (Eclipse IDE、docker
コマンド、または OpenShift の oc
コマンドなど) を有効にして仮想マシンの Docker デーモンと対話できます。
~]$ vagrant adbinfo
# Set the following environment variables to enable access to the
# docker daemon running inside of the vagrant virtual machine:
export DOCKER_HOST=tcp://192.168.121.195:2376
export DOCKER_CERT_PATH=/home/john/cdk/components/rhel/rhel-ose/.vagrant/machines/default/libvirt/.docker
export DOCKER_TLS_VERIFY=1
export DOCKER_MACHINE_NAME=081d3cd
# run following command to configure your shell:
# eval "$(vagrant adbinfo)"
Linux で以下のコマンドを実行し、必要な環境変数を設定します。
~]$ eval "$(vagrant adbinfo)"
3.3. Docker サービスの使用
Red Hat CDK 仮想マシンにログインすると (vagrant ssh
コマンドを使用)、Red Hat CDK box の初期化に使用した Vagrantfile に基づいて複数の異なるサービスが事前に設定された状態で実行されます。Docker サービスはいずれの場合でも実行され、このサービスは仮想マシンの起動直後に使用できます。Docker サービスの使用およびこのサービスとの対話は仮想マシン外のホストワークステーションから可能ですが (Eclipse IDE で提供される統合 Docker サポートなどを使用)、このセクションでは、仮想マシン内のコマンドラインから Docker サービスの使用を開始するための数多くの基本的な docker
コマンドを紹介します。
Docker サービスの詳細な説明については、『Red Hat Enterprise Linux Atomic Host 7 コンテナーの使用ガイド』の「Docker フォーマットのコンテナーイメージの使用方法」の章を参照してください。
3.3.1. Docker サービスについての情報の取得
docker
コマンドは、Docker サービスやこのサービスが実行される環境、ならびに利用可能なリソースについての情報を取得するためのいくつかのサブコマンドを提供します。また、このサービスが管理するイメージおよびコンテナー、および事前に設定されたレジストリーから利用できるイメージのサービスを照会できます。デフォルトで、Red Hat CDK の Docker サービスは Docker Hub (docker.io) および Red Hat Atomic Registry (registry.access.redhat.com) の両方からイメージをダウンロードし、使用できます。
3.3.1.1. Docker 環境についての情報収集
以下のコマンドを使用して、Docker サービスおよび稼働中の環境についての情報を取得します。
- Docker サービスのバージョンの確認
docker version
コマンドを実行し、Docker クライアントおよび Docker サーバーの両方のバージョンを確認します。~]$ docker version Client: Version: 1.8.2 API version: 1.20 Package Version: docker-1.8.2-8.el7.x86_64 Go version: go1.4.2 Git commit: a01dc02/1.8.2 Built: OS/Arch: linux/amd64 Server: Version: 1.8.2 API version: 1.20 Package Version: Go version: go1.4.2 Git commit: a01dc02/1.8.2 Built: OS/Arch: linux/amd64
- システムおよびリソースについての情報の表示
docker info
コマンドを実行して、ホストシステム (この場合は、Vagrant が管理する仮想化 Red Hat Enterprise Linux インスタンス)、仮想化リソースの利用、基本的なネットワーク情報、および管理されるコンテナーおよびイメージの数についての情報を表示します。~]$ docker info Containers: 10 Images: 32 Storage Driver: devicemapper Pool Name: VolGroup00-docker--pool Pool Blocksize: 524.3 kB Backing Filesystem: extfs Data file: Metadata file: Data Space Used: 1.695 GB Data Space Total: 7.818 GB Data Space Available: 6.123 GB Metadata Space Used: 786.4 kB Metadata Space Total: 67.11 MB Metadata Space Available: 66.32 MB Udev Sync Supported: true Deferred Removal Enabled: false Library Version: 1.02.107-RHEL7 (2015-10-14) Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.10.0-327.el7.x86_64 Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo) CPUs: 2 Total Memory: 993 MiB Name: localhost.localdomain ID: 5BXK:XDRV:CYAY:RIWW:NGGU:HN77:KATM:LQ4I:FTF6:5TNX:3U5P:7YK6 WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
3.3.1.2. コンテナーおよびイメージについての情報収集
以下のコマンドを使用して、システム上のイメージおよびコンテナーについての情報を取得します。
- 管理イメージの一覧表示
docker images
コマンドを実行して、ローカルレジストリーで利用できるイメージの一覧を表示します。~]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/prom/haproxy-exporter latest 559b63e1147d 4 weeks ago 23.56 MB registry.access.redhat.com/openshift3/ose-haproxy-router v3.1.0.4 6a3fe65c07f1 6 weeks ago 410.5 MB registry.access.redhat.com/openshift3/ose-sti-builder v3.1.0.4 8b1293f81020 6 weeks ago 395.6 MB registry.access.redhat.com/openshift3/ose-deployer v3.1.0.4 9580a28b3e18 6 weeks ago 395.6 MB registry.access.redhat.com/openshift3/ose v3.1.0.4 62208f151337 6 weeks ago 395.6 MB openshift latest 62208f151337 6 weeks ago 395.6 MB registry.access.redhat.com/openshift3/ose-docker-registry v3.1.0.4 eb7a879607cf 6 weeks ago 419.9 MB registry.access.redhat.com/openshift3/ose-pod v3.1.0.4 758ab73ad286 6 weeks ago 327.4 MB
- 管理コンテナーの一覧表示
docker ps
コマンドを実行して、実行中のコンテナーの一覧を表示します。--all
または-a
パラメーターを追加して、利用可能なすべてのコンテナーを一覧表示します (実行中のコンテナーに限らない)。以下の出力例にあるように、 Red Hat CDK には起動直後に実行されるいくつかのコンテナーがあります。これらのコンテナーは Red Hat CDK が提供するサービスの一部を提供するので、これらを停止したり削除したりすることはできません。以下の例は、OpenShift サービスを搭載したコンテナーを示しています。--format
パラメーターを指定して、個別のコンテナーについて表示させたい情報を指定します (利用可能なプレースホルダーの一覧については、docker-ps(1)
man ページを参照してください)。以下は例になります。~]$ docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.Status}}" CONTAINER ID IMAGE COMMAND STATUS 79dbe220fe97 openshift3/ose-haproxy-router:v3.1.0.4 "/usr/bin/openshift-r" Up 2 hours bd496c95575e prom/haproxy-exporter:latest "/bin/go-run -haproxy" Up 2 hours 09101cf1e40b openshift3/ose-pod:v3.1.0.4 "/pod" Up 2 hours 59b3323bed2b openshift3/ose-docker-registry:v3.1.0.4 "/bin/sh -c 'REGISTRY" Up 2 hours 7889628047b1 openshift3/ose-pod:v3.1.0.4 "/pod" Up 2 hours 7506009d9e1c openshift "/usr/bin/openshift s" Up 2 hours
- コンテナーリソースの使用についての情報の表示
docker stats <container>
コマンドを実行して、特定の実行中のコンテナーのリソース使用の統計を表示するライブ出力を表示します。以下は例になります。~]$ docker stats openshift CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O openshift 0.00% 65.65 MB/1.041 GB 6.30% 0 B/0 B
- コンテナーおよびイメージ設定についての詳細情報の表示
docker inspect <container>
コマンドを実行して、コンテナーまたはイメージについてのローレベルの情報を JSON 形式で表示します。同じ名前のコンテナーとイメージがある場合には、--type
パラメーターを使用して、コンテナー
(デフォルト) またはイメージ
についての情報を表示するかどうかを指定します。--format
パラメーターを指定して、表示させたい出力部分を指定します (出力例については、docker-inspect(1)
man ページを参照してください)。たとえば、以下の形式を定義して、コンテナーによって公開されるネットワークポートを一覧表示します。~]$ docker inspect --format='{{.Config.ExposedPorts}}' openshift map[8443/tcp:{} 53/tcp:{}]
3.3.2. 新規 Docker フォーマットのコンテナーイメージの取得
コンテナーを作成するために使用する既存イメージは、2 つの事前に設定されたリポジトリー (Docker Hub (docker.io) および Red Hat Atomic Registry (registry.access.redhat.com)) のいずれかからダウンロード (取得) するか、またはローカルファイルからインポートできます。
- レジストリーを使用したイメージの検索
docker search <search-term>
コマンドを実行して、事前に定義されたレジスターでイメージを検索します。たとえば、名前または名前空間に文字列rhscl
を含むイメージを検索するには、以下のコマンドを使用します。~]$ docker search rhscl INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMAT docker.io docker.io/rhscl/mongodb-26-centos7 A Centos7 based MongoDB v2.6 image for use... 0 redhat.com registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 Developer toolset toolchain 0 redhat.com registry.access.redhat.com/rhscl/httpd-24-rhel7 Apache HTTP 2.4 Server 0 redhat.com registry.access.redhat.com/rhscl/mariadb-100-rhel7 MariaDB 10.0 SQL database server 0 redhat.com registry.access.redhat.com/rhscl/mongodb-26-rhel7 MongoDB 2.6 NoSQL database server 0 redhat.com registry.access.redhat.com/rhscl/mysql-56-rhel7 MySQL 5.6 SQL database server 0 redhat.com registry.access.redhat.com/rhscl/nginx-16-rhel7 Nginx 1.6 server and a reverse proxy server 0 [...]
- レジストリーからのイメージのダウンロード
docker pull <image>
コマンドを実行して、ローカルで使用するために指定されたイメージをシステムにダウンロード (プル) します。イメージの名前のみを指定することは可能ですが、取得元のレジストリーおよび特定のイメージが公開される名前空間を指定するとなお望ましいと言えるでしょう。以下の順序に基づく命名規則が使用されます。[registry/][namespace/]name
たとえば、Red Hat Atomic Registry から Red Hat Developer Toolset ツールチェーンコンポーネントを使ってイメージを取得するには、以下のコマンドを使用します。
~]$ docker pull registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 Using default tag: latest 68f6775524af: Download complete 6c3a84d798dc: Download complete Status: Downloaded newer image for registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7:latest ~]$ docker images registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 latest 68f6775524af 7 weeks ago 365.5 MB
- ファイルからのイメージのロード
docker load < file.tar
コマンドを実行してイメージをローカルファイルのfile.tar
からロードします。デフォルトでdocker pull
コマンドはイメージデータを標準入力からロードします。ファイルからイメージをロードするには、--input
または-i
パラメーターを使用します。たとえば、docker save
コマンドを使用して tar ファイルに事前に保存された Red Hat Developer Toolset ツールチェーンイメージをロードするには、以下のコマンドを使用します。~]$ docker load -i devtoolset.tar
3.3.3. コンテナーの使用
以下のコマンドを使用して、コンテナーの起動、停止、または削除を実行するか、またはコンテナー内からアプリケーションを実行します。
- 新規コンテナーの起動およびコマンドの実行
docker run <image> <command>
コマンドを実行し、新規コンテナーをイメージから起動し、指定されたコマンドを実行します。--name
パラメーターを使用してコンテナーの名前を指定し、Docker サービスがランダムな名前をコンテナーに割り当てることを防ぎます。たとえば、Red Hat Developer Toolset ツールチェーンから作成されたコンテナーでuname -a
コマンド (-a は出力を表示) を実行するには、以下のコマンドを使用します。~]$ docker run --name devtoolset registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 uname -a Linux 22b819dec3f1 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux ~]$ docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Command}}\t{{.Status}}" CONTAINER ID NAMES COMMAND STATUS 22b819dec3f1 devtoolset "uname -a" Exited (0) 2 seconds ago [...]
- 既存コンテナーの実行
docker start -i <container>
コマンドを使用して、直前の例で起動したコンテナーを実行します (--interactive
または-i
パラメーターはコンテナーの標準入力を現在のシェルに割り当てるようにします。つまり、コンテナーで実行された出力が表示されるようにします):~]$ docker start -i devtoolset Linux 22b819dec3f1 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
- 新規コンテナーの起動およびコンテナーのシェルへの切り替え
docker run -ti <image> bash
コマンドを実行し、イメージから新規コンテナーを起動し、コンテナー内のインタラクティブシェルに切り替えます。--interactive
または-i
パラメーターを--tty
または-t
パラメーターと共に使用し、Bash シェルが実行される疑似 TTY (pseudo-TTY) を割り当てます。以下は例になります。~]$ docker run -it registry.access.redhat.com/rhscl/devtoolset-4-toolchain-rhel7 bash bash-4.2$ uname -a Linux 5e224c8c3878 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux bash-4.2$ exit exit ~]$ docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Command}}\t{{.Status}}" CONTAINER ID NAMES COMMAND STATUS 5e224c8c3878 devtoolset "uname -a" Exited (0) 2 seconds ago [...]
- コンテナーの削除
docker rm <container>
コマンドを実行して、1つ以上のコンテナーを削除し、ホストのリソースを解放します。たとえば、直前の例で作成されたコンテナーを削除するには、以下のコマンドを使用します。~]$ docker rm devtoolset devtoolset ~]$ docker ps -a | grep devtoolset
3.4. その他のリソース
- 利用可能な
docker
コマンドの一覧およびそれらの機能の詳細説明については、docker(1)
man ページのCOMMANDS
セクションを参照してください。 - Red Hat Enterprise Linux および Red Hat Atomic プラットフォームの使用および管理についての詳細は、『コンテナーの使用ガイド』を参照してください。
Comments