Dockerは、事実上どこでも実行できるポータブルで自給自足のコンテナーとしてアプリケーションを迅速に構築、テスト、デプロイできるようにするコンテナー化テクノロジーです。
このチュートリアルでは、CentOS7にDockerCEをインストールする方法を説明し、Dockerの基本的な概念とコマンドについて説明します。
前提条件#
このチュートリアルを進める前に、次の前提条件が満たされていることを確認してください。
- CentOS7サーバー
- sudo権限を持つroot以外のユーザーとしてログインしています。新しいsudoユーザーを作成する方法については、このガイドを確認してください。
CentOSにDockerをインストールする#
Dockerパッケージは公式のCentOS7リポジトリで入手できますが、常に最新バージョンであるとは限りません。推奨されるアプローチは、DockerのリポジトリからDockerをインストールすることです。
CentOS 7サーバーにDockerをインストールするには、次の手順に従います。
-
システムパッケージを更新することから始めて、必要な依存関係をインストールします:
sudo yum update
sudo yum install yum-utils device-mapper-persistent-data lvm2
-
次に、次のコマンドを実行して、Docker安定版リポジトリをシステムに追加します。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
Dockerリポジトリが有効になったので、次のように入力して、yumを使用して最新バージョンのDocker CE(Community Edition)をインストールします。
sudo yum install docker-ce
-
Dockerパッケージがインストールされたら、Dockerデーモンを起動し、起動時に自動的に起動できるようにします。
sudo systemctl start docker
sudo systemctl enable docker
-
Dockerサービスが実行されていることを確認するには、次のように入力します。
sudo systemctl status docker
出力は次のようになります。
● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2018-10-31 08:51:20 UTC; 7s ago Docs: https://docs.docker.com Main PID: 2492 (dockerd) CGroup: /system.slice/docker.service ├─2492 /usr/bin/dockerd └─2498 docker-containerd --config /var/run/docker/containerd/containerd.toml
-
執筆時点で、Dockerの現在の安定バージョンは
18.06.1
です。 、Dockerバージョンタイプを出力するには:docker -v
Docker version 18.06.1-ce, build e68fc7a
SudoなしでDockerコマンドを実行する#
デフォルトでは、Dockerの管理には管理者権限が必要です。 sudo
を付加せずに、root以外のユーザーとしてDockerコマンドを実行する場合 DockerCEパッケージのインストール中に作成されるdockerグループにユーザーを追加する必要があります。次のように入力してください:
sudo usermod -aG docker $USER
$USER
ユーザー名を保持する環境変数です。
ログアウトしてから再度ログインすると、グループメンバーシップが更新されます。
Dockerが正常にインストールされ、sudoなしでdockerコマンドを実行できることを確認するには、次のコマンドを発行して、テストイメージをダウンロードし、コンテナーで実行し、「HellofromDocker」メッセージを出力して終了します。
docker container run hello-world
出力は次のようになります。
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Dockerコマンドラインインターフェース#
Dockerのインストールが機能するようになったので、DockerCLIの基本的な構文を見ていきましょう。
dockerコマンドラインは次の形式を取ります:
docker [option] [subcommand] [arguments]
docker
と入力すると、使用可能なすべてのコマンドを一覧表示できます。 パラメータなし:
docker
[subcommand]
についてさらにサポートが必要な場合 、次のように入力します:
docker [subcommand] --help
Docker画像#
Dockerイメージは、実行可能ソフトウェアアプリケーションを構成するイメージのDockerfile内の命令を表す一連のレイヤーで構成されています。イメージは、アプリケーションと、アプリケーションの実行に必要なバイナリ、ライブラリ、命令などの他のすべての依存関係を含む不変のバイナリファイルです。つまり、Dockerイメージは基本的にDockerコンテナのスナップショットです。
Docker Hubはクラウドベースのレジストリサービスであり、他の機能の中でも特に、Dockerイメージをパブリックリポジトリまたはプライベートリポジトリに保持するために使用されます。
Docker Hubリポジトリで画像を検索するには、search
を使用するだけです。 サブコマンド。たとえば、CentOSイメージを検索するには、次のコマンドを実行します。
docker search centos
出力は次のようになります。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 4257 [OK]
ansible/centos7-ansible Ansible on Centos7 109 [OK]
jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x86_… 94 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 52 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 40 [OK]
tutum/centos Simple CentOS docker image with SSH access 39
ご覧のとおり、検索結果は5列のテーブルNAME
を出力します。 、DESCRIPTION
、STARS
、OFFICIAL
およびAUTOMATED
。公式イメージは、Dockerがアップストリームパートナーと共同で開発したイメージです。
CentOS 7の公式ビルドをダウンロードする場合は、image pull
を使用してダウンロードできます。 サブコマンド:
docker image pull centos
Using default tag: latest
latest: Pulling from library/centos
469cfcc7a4b3: Pull complete
Digest: sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Status: Downloaded newer image for centos:latest
インターネットの速度に応じて、ダウンロードには数秒または数分かかる場合があります。画像がダウンロードされると、次のように画像を一覧表示できます:
docker image ls
出力は次のようになります。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest e38bc07ac18e 3 weeks ago 1.85kB
centos latest e934aafc2206 4 weeks ago 199MB
何らかの理由で画像を削除したい場合は、image rm [image_name]
を使用して削除できます。 サブコマンド:
docker image rm centos
Untagged: centos:latest
Untagged: centos@sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Deleted: sha256:e934aafc22064b7322c0250f1e32e5ce93b2d19b356f4537f5864bd102e8531f
Deleted: sha256:43e653f84b79ba52711b0f726ff5a7fd1162ae9df4be76ca1de8370b8bbf9bb0
Dockerコンテナ#
画像のインスタンスはコンテナと呼ばれます。コンテナは、単一のアプリケーション、プロセス、またはサービスのランタイムを表します。
これは最も適切な比較ではないかもしれませんが、プログラマーであれば、Dockerイメージをクラスとして、Dockerコンテナーをクラスのインスタンスとして考えることができます。
docker container
を使用して、コンテナーを開始、停止、削除、および管理できます。 サブコマンド。
次のコマンドは、CentoOSイメージに基づいてDockerコンテナを起動します。ローカルに画像がない場合は、最初に画像がダウンロードされます:
docker container run centos
一見、何も起こらなかったように見えるかもしれません。まあ、それは真実ではありません。 CentOSコンテナは、長時間実行されるプロセスがなく、コマンドを提供しなかったため、起動直後に停止します。そのため、コンテナは起動し、空のコマンドを実行してから終了しました。
スイッチ-it
コマンドラインを介してコンテナを操作できます。インタラクティブコンテナタイプを開始するには:
docker container run -it centos /bin/bash
コンテナが起動すると出力からわかるように、コマンドプロンプトが変更されます。これは、コンテナ内から作業していることを意味します。
[root@719ef9304412 /]#
実行中のコンテナを一覧表示するには:、次のように入力します:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
実行中のコンテナがない場合、出力は空になります。
実行中のコンテナと停止中のコンテナの両方を表示するには、-a
を渡します。 スイッチ:
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
c55680af670c centos "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago modest_hawking
c6a147d1bc8a hello-world "/hello" 20 hours ago Exited (0) 20 hours ago sleepy_shannon
1つ以上のコンテナを削除するには、コンテナIDを上からコピーしてcontainer rm
の後に貼り付けます。 サブコマンド:
docker container rm c55680af670c