序章

Dockerは、コンテナー内でアプリケーションプロセスを簡単かつ簡単に実行できるようにするアプリケーションです。これは、仮想マシンのようであり、移植性が高く、リソースに優しいだけで、ホストオペレーティングシステムへの依存度が高くなります。 Dockerコンテナーのさまざまなコンポーネントの詳細な概要については、 Dockerエコシステム:一般的なコンポーネントの概要をご覧ください。

CentOS7にDockerをインストールする方法は2つあります。 1つの方法は、オペレーティングシステムの既存のインストールにインストールすることです。 もう1つは、Dockerを自動インストールする DockerMachineというツールを使用してサーバーを起動することです。

このチュートリアルでは、CentOS7の既存のインストールにインストールして使用する方法を学習します。

前提条件

  • 64ビットCentOS7ドロップレット
  • sudo権限を持つroot以外のユーザー。 CentOS 7の初期セットアップガイドを使用してセットアップされたCentOS7サーバーは、これをセットアップする方法を説明しています。

注: Dockerには、64ビットバージョンのCentOS 7と、3.10以上のカーネルバージョンが必要です。 デフォルトの64ビットCentOS7ドロップレットは、これらの要件を満たしています。

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo. CentOS 7の初期セットアップガイドでは、ユーザーを追加してsudoアクセスを許可する方法について説明しています。

ステップ1—Dockerをインストールする

公式のCentOS7リポジトリで利用可能なDockerインストールパッケージは、最新バージョンではない可能性があります。 最新かつ最高のバージョンを入手するには、公式のDockerリポジトリからDockerをインストールします。 このセクションでは、その方法を説明します。

しかし、最初に、パッケージデータベースを更新しましょう。

  1. sudo yum check-update

次に、このコマンドを実行します。 公式のDockerリポジトリを追加し、最新バージョンのDockerをダウンロードして、次のようにインストールします。

  1. curl -fsSL https://get.docker.com/ | sh

インストールが完了したら、Dockerデーモンを起動します。

  1. sudo systemctl start docker

実行されていることを確認します。

  1. sudo systemctl status docker

出力は次のようになり、サービスがアクティブで実行中であることを示します。

Output
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago Docs: https://docs.docker.com Main PID: 749 (docker)

最後に、サーバーを再起動するたびに起動することを確認してください。

  1. sudo systemctl enable docker

Dockerをインストールすると、Dockerサービス(デーモン)だけでなく、 docker コマンドラインユーティリティ、またはDockerクライアント。 の使用方法を探ります docker このチュートリアルの後半にあるコマンド。

ステップ2— Sudoを使用せずにDockerコマンドを実行する(オプション)

デフォルトでは、 docker コマンドにはroot権限が必要です。つまり、コマンドの前に接頭辞を付ける必要があります sudo. また、Dockerのインストール中に自動的に作成されるdockerグループのユーザーが実行することもできます。 を実行しようとすると docker 接頭辞なしのコマンド sudo または、dockerグループに属していない場合は、次のような出力が得られます。

Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

タイピングを避けたい場合 sudo あなたが実行するときはいつでも docker コマンドを実行し、ユーザー名をdockerグループに追加します。

  1. sudo usermod -aG docker $(whoami)

この変更を有効にするには、Dropletからログアウトし、同じユーザーとして再度ログインする必要があります。

にユーザーを追加する必要がある場合 docker ログインしていないグループは、以下を使用してそのユーザー名を明示的に宣言します。

  1. sudo usermod -aG docker username

この記事の残りの部分では、 docker dockerユーザーグループのユーザーとしてコマンドを実行します。 そうしない場合は、コマンドの前に sudo.

ステップ3—Dockerコマンドを使用する

Dockerがインストールされて機能しているので、今度はコマンドラインユーティリティに慣れてください。 使用する docker オプションとサブコマンドのチェーンを渡し、その後に引数を渡すことで構成されます。 構文は次の形式を取ります。

  1. docker [option] [command] [arguments]

使用可能なすべてのサブコマンドを表示するには、次のように入力します。

  1. docker

Docker 1.11.1以降、使用可能なサブコマンドの完全なリストは次のとおりです。

Output
attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container network Manage Docker networks pause Pause all processes within a container port List port mappings or a specific mapping for the CONTAINER ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart a container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop a running container tag Tag an image into a repository top Display the running processes of a container unpause Unpause all processes within a container update Update configuration of one or more containers version Show the Docker version information volume Manage Docker volumes wait Block until a container stops, then print its exit code

特定のコマンドで使用可能なスイッチを表示するには、次のように入力します。

  1. docker docker-subcommand --help

システム全体の情報を表示するには、次を使用します。

  1. docker info

ステップ4—Dockerイメージの操作

Dockerコンテナーは、Dockerイメージから実行されます。 デフォルトでは、Dockerプロジェクトの背後にある会社であるDockerによって管理されるDockerレジストリであるDockerHubからこれらのイメージをプルします。 誰でもDockerHubでDockerイメージをビルドしてホストできるため、Dockerコンテナーを実行する必要があるほとんどのアプリケーションとLinuxディストリビューションには、DockerHubでホストされるイメージがあります。

Docker Hubからイメージにアクセスしてダウンロードできるかどうかを確認するには、次のように入力します。

  1. docker run hello-world

以下を含む出力は、Dockerが正しく機能していることを示しているはずです。

Output
Hello from Docker. This message shows that your installation appears to be working correctly. ...

Docker Hubで利用可能なイメージを検索するには、 docker とのコマンド search サブコマンド。 たとえば、CentOSイメージを検索するには、次のように入力します。

  1. docker search centos

スクリプトはDockerHubをクロールし、名前が検索文字列と一致するすべての画像のリストを返します。 この場合、出力は次のようになります。

Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 2224 [OK] jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 22 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 17 [OK] million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 11 [OK] nimmis/java-centos This is docker images of CentOS 7 with dif... 10 [OK] torusware/speedus-centos Always updated official CentOS docker imag... 8 [OK] nickistre/centos-lamp LAMP on centos setup 3 [OK] ...

OFFICIAL列のOK は、プロジェクトの背後にある会社によって構築およびサポートされているイメージを示します。 使用したい画像を特定したら、を使用してコンピュータにダウンロードできます。 pull 次のようなサブコマンド:

  1. docker pull centos

イメージがダウンロードされた後、ダウンロードしたイメージを使用してコンテナを実行できます。 run サブコマンド。 画像がダウンロードされていない場合 docker で実行されます run サブコマンドの場合、Dockerクライアントは最初にイメージをダウンロードし、次にそれを使用してコンテナーを実行します。

  1. docker run centos

コンピューターにダウンロードされたイメージを表示するには、次のように入力します。

  1. docker images

出力は次のようになります。

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              778a53015523        5 weeks ago         196.7 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

このチュートリアルの後半で説明するように、コンテナーの実行に使用するイメージを変更して新しいイメージを生成するために使用できます。このイメージは、Docker Hubまたはその他にアップロードできます( pushed は専門用語です)。 Dockerレジストリ。

ステップ5—Dockerコンテナを実行する

The hello-world 前の手順で実行したコンテナーは、テストメッセージを発行した後に実行および終了するコンテナーの例です。 ただし、コンテナはそれよりもはるかに便利であり、インタラクティブにすることができます。 結局のところ、これらは仮想マシンに似ていますが、よりリソースに優しいだけです。

例として、CentOSの最新のイメージを使用してコンテナーを実行してみましょう。 -iスイッチと-tスイッチの組み合わせにより、コンテナーへのインタラクティブなシェルアクセスが可能になります。

  1. docker run -it centos

コマンドプロンプトは、現在コンテナ内で作業しているという事実を反映するように変更され、次の形式をとる必要があります。

Output
[root@59839a1b7de2 /]#

重要:コマンドプロンプトのコンテナIDをメモしてください。 上記の例では、 59839a1b7de2.

これで、コンテナ内で任意のコマンドを実行できます。 たとえば、実行中のコンテナーにMariaDBサーバーをインストールしましょう。 コマンドの前にプレフィックスを付ける必要はありません sudo、root権限でコンテナ内を操作しているため:

  1. yum install mariadb-server

ステップ6—コンテナ内の変更をDockerイメージにコミットする

Dockerイメージを起動すると、仮想マシンの場合と同じようにファイルを作成、変更、および削除できます。 行った変更は、そのコンテナにのみ適用されます。 あなたはそれを開始および停止することができますが、一度あなたがそれを破壊すると docker rm コマンドを実行すると、変更は永久に失われます。

このセクションでは、コンテナーの状態を新しいDockerイメージとして保存する方法を示します。

CentOSコンテナ内にMariaDBサーバーをインストールすると、イメージから実行されるコンテナが作成されますが、コンテナは作成に使用したイメージとは異なります。

コンテナの状態を新しいイメージとして保存するには、最初にコンテナを終了します。

  1. exit

次に、次のコマンドを使用して、変更を新しいDockerイメージインスタンスにコミットします。 -m スイッチは、あなたや他の人があなたが行った変更を知るのに役立つコミットメッセージ用であり、-aは作成者を指定するために使用されます。 コンテナIDは、チュートリアルの前半でインタラクティブなDockerセッションを開始したときにメモしたものです。 Docker Hubで追加のリポジトリを作成した場合を除き、リポジトリは通常、DockerHubのユーザー名です。

  1. docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

例えば:

  1. docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

注:イメージをコミットすると、新しいイメージはローカル、つまりコンピューターに保存されます。 このチュートリアルの後半では、イメージをDocker HubなどのDockerレジストリにプッシュして、自分や他のユーザーがイメージを評価して使用できるようにする方法を学習します。

その操作が完了した後、Dockerイメージをコンピューターにリストすると、新しいイメージと、それが派生した古いイメージが表示されます。

  1. docker images

出力は次のようになります。

Output
REPOSITORY TAG IMAGE ID CREATED SIZE finid/centos-mariadb latest 23390430ec73 6 seconds ago 424.6 MB centos latest 778a53015523 5 weeks ago 196.7 MB hello-world latest 94df4f0ce8a4 2 weeks ago 967 B

上記の例では、 centos-mariadb は、DockerHubの既存のCentOSイメージから派生した新しいイメージです。 サイズの違いは、行われた変更を反映しています。 この例では、MariaDBサーバーがインストールされているという変更がありました。 したがって、次回、MariaDBサーバーがプリインストールされたCentOSを使用してコンテナーを実行する必要がある場合は、新しいイメージを使用できます。 イメージは、Dockerfileと呼ばれるものから構築することもできます。 しかし、これは非常に複雑なプロセスであり、この記事の範囲外です。 これについては、今後の記事で説明します。

ステップ7—Dockerコンテナの一覧表示

Dockerをしばらく使用すると、コンピューター上にアクティブな(実行中の)コンテナーと非アクティブなコンテナーが多数あります。 アクティブなものを表示するには、次を使用します。

  1. docker ps

次のような出力が表示されます。

Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7c79cc556dd centos "/bin/bash" 3 hours ago Up 3 hours silly_spence

すべてのコンテナ(アクティブおよび非アクティブ)を表示するには、コンテナに渡します -a スイッチ:

  1. docker ps -a

作成した最新のコンテナを表示するには、それを渡します -l スイッチ:

  1. docker ps -l

実行中またはアクティブなコンテナの停止は、次のように入力するだけです。

  1. docker stop container-id

container-id は、 docker ps 指図。

ステップ8—DockerイメージをDockerリポジトリにプッシュする

既存のイメージから新しいイメージを作成した後の次の論理的な手順は、選択した数人の友達、Docker Hub上の全世界、またはアクセスできる他のDockerレジストリと共有することです。 イメージをDockerHubまたはその他のDockerレジストリにプッシュするには、そこにアカウントが必要です。

このセクションでは、DockerイメージをDockerHubにプッシュする方法を示します。

Docker Hubでアカウントを作成するには、 DockerHubで登録します。 その後、イメージをプッシュするには、最初にDockerHubにログインします。 認証を求めるメッセージが表示されます。

  1. docker login -u docker-registry-username

正しいパスワードを指定した場合、認証は成功するはずです。 次に、以下を使用して独自の画像をプッシュできます。

  1. docker push docker-registry-username/docker-image-name

完了するまでに時間がかかります。完了すると、出力は次のようになります。

Output
The push refers to a repository [docker.io/finid/centos-mariadb] 670194edfaf5: Pushed 5f70bf18a086: Mounted from library/centos 6a6c96337be1: Mounted from library/centos ...

画像をレジストリにプッシュすると、下の画像に示すように、アカウントのダッシュボードに表示されます。

プッシュを試みた結果、この種のエラーが発生した場合は、ログインしなかった可能性があります。

Output
The push refers to a repository [docker.io/finid/centos-mariadb] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

ログインしてから、プッシュを繰り返します。

結論

Dockerには、この記事で説明した以上のことがたくさんありますが、CentOS7での作業を開始するにはこれで十分です。 ほとんどのオープンソースプロジェクトと同様に、Dockerは急速に発展しているコードベースから構築されているため、最新情報についてはプロジェクトのブログページにアクセスする習慣をつけてください。

DOコミュニティのその他のDockerチュートリアルも確認してください。