以前は、Xenのようなハイパーバイザーやopenstackのようなクラウドミドルウェアのインストールを見てきました。最近、docker containerと呼ばれる新しいテクノロジーが、アプリケーション開発で最も注目されているトレンドになっています。この記事では、Dockerとは何か、仮想マシンとの違い、Dockerのインストールとその使用法について説明します。
Dockerとは何ですか?
Dockerは、実行に必要なすべてのもの(コード、ランタイム、システムツール、システムライブラリなど、サーバーにインストールできるものすべて)を含む完全なファイルシステムにソフトウェアをラップするコンテナーです。コンテナはオペレーティングシステムレベルで仮想化されるため、システムリソースの使用においてハイパーバイザーよりも効率的です。 LXC、Dockerなどの多くのLinuxコンテナテクノロジーがあります
Dockerと仮想マシンの違いは何ですか?
アーキテクチャのアプローチが異なると、コンテナは同様のリソース分離を備えていても、はるかにポータブルで効率的です。下の写真は、コンテナと仮想マシンのアーキテクチャの違いを示しています。
CentOS7にDockerコンテナをインストールする方法
Dockerの最新の公式リリースはv1.10です。以下の手順は、CentOS7サーバーにDockerコンテナをインストールするためのものです。ルートとしてCentOS7サーバーにログインし、以下の手順に従います。
ステップ1: ベストプラクティスとして、以下に示すように、yumを使用してシステムを更新しましょう。
# yum -y update
ステップ2: デフォルトでは、DockerはCentOS-Extraリポジトリに含まれています。最新バージョンのDockerを使用する場合は、以下のコマンドを実行してリポジトリに追加します。
# tee /etc/yum.repos.d/docker.repo <<-'EOF'
> [dockerrepo]
> name=Docker Repository
> baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
> enabled=1
> gpgcheck=1
> gpgkey=https://yum.dockerproject.org/gpg
> EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
ステップ3: dockerpackageとdocker-registryをインストールします。 Dockerレジストリは、Dockerイメージを保存して配布できる、ステートレスで拡張性の高いサーバー側アプリケーションです。
# yum -y install docker docker-registry
ステップ3: dockerが正常にインストールされたら、dockerサービスを開始します。
# systemctl start docker.service
ステップ4: 次のコマンドを使用して、起動時にdockerサービスが開始されることを確認します。
# systemctl enable docker.service
ステップ5: Dockerサービスを確認する
# systemctl status docker.service
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2016-03-22 16:29:00 IST; 20h ago Docs: http://docs.docker.com Main PID: 30108 (docker) CGroup: /system.slice/docker.service ââ30108 /usr/bin/docker daemon --selinux-enabled
Mar 22 17:10:12 vm1 docker[30108]: time="2016-03-22T17:10:12.541577770+05:3...1" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429417681+05:3...0" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429730128+05:3...s" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429781346+05:3...04 Mar 22 17:11:13 vm1 docker[30108]: time="2016-03-22T17:11:13.020019713+05:3...0" Mar 22 17:11:23 vm1 docker[30108]: time="2016-03-22T17:11:23.021293894+05:3...e" Mar 22 17:11:28 vm1 docker[30108]: time="2016-03-22T17:11:28.600657892+05:3...n" Mar 22 17:11:35 vm1 docker[30108]: time="2016-03-22T17:11:35.938950613+05:3...0" Mar 22 17:11:45 vm1 docker[30108]: time="2016-03-22T17:11:45.939810804+05:3...e" Mar 22 17:11:57 vm1 docker[30108]: time="2016-03-22T17:11:57.720737864+05:3...n" Hint: Some lines were ellipsized, use -l to show in full.
Dockerの使用方法?
ステップ1: Dockerコンテナをダウンロードします。以下のコマンドを実行して、最新の安定した公式CentOSイメージを取得します。
# docker pull centos
上記のコマンドは、最新の安定したcentosリリースをプルします。 CentOS 6など、他のバージョンのCentOSイメージをプルするには:
# docker pull centos:centos6
ステップ2: 画像がローカルにダウンロードされていることを確認するには:
# docker images centos REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest bb3d629a7cbc 2 weeks ago 196.6 MB
ステップ3: 利用可能なすべてのダウンロード画像を一覧表示するには:
# docker images
Dockerコンテナを実行する方法
ステップ1: 基本的なCentosコンテナをbashシェルで実行します。ここで、 -i オプションはstdinを添付します およびstdout 、 -t ttyを割り当てます 。
# docker run -i -t centos /bin/bash
それでおしまい!これで、centosdockerコンテナ内のbashシェルに着陸しました。
Dockerコンテナを操作するためのコマンド
1.コンテナをシャットダウンせずにコンテナから切断または切り離すには:
Ctrl-p + Ctrl-q
2.コミュニティですでに利用可能なコンテナはたくさんあります。コミュニティからコンテナを一覧表示するには:
# docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The official build of CentOS. 2042 [OK] docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 18 [OK] docker.io docker.io/jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 14 [OK] ... ...
# docker search ubuntu INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/ubuntu Ubuntu is a Debian-based Linux operating s... 3464 [OK] docker.io docker.io/ubuntu-upstart Upstart is an event-based replacement for ... 60 [OK] docker.io docker.io/torusware/speedus-ubuntu Always updated official Ubuntu docker imag... 25 [OK] docker.io docker.io/rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 23 [OK] ... ...
3.すべてのコンテナを一覧表示します
# docker ps -a
4.実行中のコンテナのみを一覧表示します
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4293c8265d00 centos "/bin/bash" 22 hours ago Up 9 seconds agitated_poincare
5.コンテナを停止する
上記のリストからコンテナIDを取得し、それを使用してそれぞれのコンテナを停止します。
# docker stop 4293c8265d00
6:Dockerサービスを再起動します
# systemctl restart docker.service