前書き
Dockerは、仮想マシンと同じように、コンテナー内でアプリケーションプロセスを簡単に実行できるようにするアプリケーションですが、より移植性が高く、リソースに優しく、ホストオペレーティングシステムへの依存度が高くなります。
CentOS7にDockerをインストールするには2つの方法があります。 1つの方法は、オペレーティングシステムの既存のインストールにインストールすることです。もう1つは、Dockerを自動的にインストールするDockerMachineと呼ばれるツールを使用してサーバーを起動することです。
このチュートリアルでは、既存のCentOS7インストールにインストールして使用する方法を学習します。
sudo
コマンドを使用できる非rootアカウントのCentOS サーバーがセットアップされ、ファイアウォールがオンになっています。サーバーをお持ちでない方は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使って実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。注: Dockerには、64ビットバージョンのCentOS 7と、3.10以上のカーネルバージョンが必要です。デフォルトの64ビットCentOS7 Tencent CloudCVMはこれらの要件を満たしています。
このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。
公式のCentOS7リポジトリで提供されているDockerインストールパッケージは、最新バージョンではない可能性があります。最新かつ最高のバージョンを入手するには、公式のDockerリポジトリからDockerをインストールしてください。このセクションでは、これを行う方法を説明します。
しかし、最初に、パッケージデータベースを更新しましょう。
sudo yum check-update
次に、このコマンドを実行します。公式のDockerリポジトリを追加し、最新バージョンのDockerをダウンロードして、次のようにインストールします。
curl -fsSL https://get.docker.com/| sh
インストールが完了したら、Dockerデーモンを起動します。
sudo systemctl start docker
実行されていることを確認します。
sudo systemctl status docker
出力は次のようになり、サービスがアクティブで実行中であることを示します。
● docker.service - Docker Application Container Engine
Loaded:loaded(/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active:active(running) since Sun 2016-05-0106:53:52 CDT;1 weeks 3 days ago
Docs: https://docs.docker.com
Main PID:749(docker)
最後に、サーバーが再起動するたびに起動することを確認してください。
sudo systemctl enable docker
今すぐDockerをインストールすると、Dockerサービス(デーモン)が提供されるだけでなく、 docker
コマンドラインユーティリティまたはDockerクライアントも提供されます。このチュートリアルの後半で、このコマンドを docker
で使用する方法について説明します。
デフォルトでは、 docker
コマンドを実行するにはroot権限が必要です。つまり、コマンドの前に sudo
を追加する必要があります。また、Dockerのインストール中に自動的に作成される** docker **グループのユーザーが実行することもできます。 「sudo」を使用せずに、またはdockerグループのプレフィックスとして使用せずに「docker」コマンドを実行しようとすると、次の出力が得られます。
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
docker
コマンドの実行時に sudo
が入力を回避したい場合は、ユーザー名をdockerグループに追加してください。
sudo usermod -aG docker $(whoami)
この変更を有効にするには、ドロップレットからログアウトして同じユーザーとして戻る必要があります。
docker
にログインしていないグループにユーザーを追加する必要がある場合は、次の方法を使用してユーザー名を明確に宣言してください。
sudo usermod -aG docker username
この記事の残りの部分では、 docker
がdockerユーザーグループのユーザーとしてコマンドを実行することを前提としています。これを行わない場合は、コマンド sudo
を前に追加してください。
Dockerがインストールされて機能しているので、コマンドラインユーティリティに慣れましょう。 docker
を使用するには、一連のオプションとサブコマンドを渡し、その後にパラメータを渡す必要があります。構文は次の形式を取ります。
docker [option][command][arguments]
使用可能なすべてのサブコマンドを表示するには、次のように入力します。
docker
Docker 1.11.1以降、使用可能なサブコマンドの完全なリストは次のとおりです。
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a newimagefrom a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a newcontainer
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 newcontainer
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 ofcontainer(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
特定のコマンドで使用可能なスイッチを表示するには、次のように入力します。
docker docker-subcommand --help
システム全体の情報を表示するには、次を使用します。
docker info
DockerコンテナはDockerイメージから実行されます。デフォルトでは、これらのイメージは、Dockerプロジェクトの背後にある会社であるDockerによって管理されるDockerレジストリであるDockerHubから取得されます。誰でもDockerHubでDockerイメージをビルドしてホストできるため、Dockerコンテナーの実行に必要なほとんどのアプリケーションとLinuxディストリビューションでは、DockerHubでイメージがホストされています。
Docker Hubからイメージにアクセスしてダウンロードできるかどうかを確認するには、次のように入力します。
docker run hello-world
出力には次のものが含まれ、Dockerが正しく機能していることを示している必要があります。
Hello from Docker.
This message shows that your installation appears to be working correctly....
search
コマンドを docker
コマンドと一緒に使用して、DockerHubで利用可能な画像を検索できます。たとえば、CentOSミラーを検索するには、次のように入力します。
docker search centos
このスクリプトはDockerHubをクロールし、名前が検索文字列と一致するすべてのミラーのリストを返します。この場合、出力は次のようになります。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS.2224[OK]
jdeathe/centos-ssh CentOS-66.7 x86_64 / CentOS-77.2.1511 x8...22[OK]
jdeathe/centos-ssh-apache-php CentOS-66.7 x86_64 / Apache / PHP / PHP M...17[OK]
million12/centos-supervisor Base CentOS-7with supervisord launcher, h...11[OK]
nimmis/java-centos This is docker images of CentOS 7with 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
サブコマンドを使用して画像をコンピューターにダウンロードできます。
docker pull centos
イメージをダウンロードした後、 run
サブコマンドでダウンロードしたイメージを使用してコンテナを実行できます。 run
サブコマンドを使用して docker
を実行したときにイメージがダウンロードされていない場合、Dockerクライアントは最初にイメージをダウンロードし、次にそれを使用してコンテナーを実行します。
docker run centos
コンピューターにダウンロードされた画像を表示するには、次のように入力します。
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または他のDockerレジストリにアップロードできます(* push *は技術用語です)。
テストメッセージを送信した後、前の手順で hello-world
コンテナを実行すると、コンテナが実行されて終了する例になります。ただし、コンテナはこれよりも便利で、インタラクティブにすることができます。結局のところ、これらは仮想マシンに似ていますが、よりリソースに優しいものです。
たとえば、CentOSの最新のイメージを使用してコンテナを実行してみましょう。 **-i スイッチと-t **スイッチの組み合わせにより、コンテナへのインタラクティブなシェルアクセスが可能になります。
docker run -it centos
コマンドプロンプトは、コンテナで作業しているという事実を反映するように変更され、次の形式になります。
[ root@59839a1b7de2 /]#
**重要:**コマンドプロンプトのコンテナIDに注意してください。上記の例では、 59839a1b7de2
です。
これで、コンテナ内で任意のコマンドを実行できます。たとえば、実行中のコンテナに[MariaDB](https://cloud.tencent.com/product/tdsql?from=10680)サーバーをインストールしてみましょう。 root権限を持つコンテナで操作しているため、コマンドの前に sudo
を付ける必要はありません。
yum install mariadb-server
Dockerイメージを起動すると、仮想マシンを使用するのと同じように、ファイルを作成、変更、および削除できます。行った変更は、このコンテナにのみ適用されます。開始および停止できますが、 docker rm
コマンドで破棄すると、変更は永久に失われます。
このセクションでは、コンテナの状態を新しいDockerイメージとして保存する方法について説明します。
MariaDBサーバーをCentOSコンテナーにインストールすると、イメージを実行するコンテナーが作成されますが、コンテナーは、作成に使用したイメージとは異なります。
コンテナの状態を新しいイメージとして保存するには、最初にコンテナを終了してください。
exit
次に、次のコマンドを使用して、新しいDockerイメージインスタンスへの変更をコミットします。 **-m スイッチは送信情報であり、あなたや他の人があなたが行った変更を知るのに役立ちます。-a **は作成者を指定するために使用されます。インタラクティブドッカーセッションを開始すると、コンテナーIDは、このチュートリアルで前述したコンテナーIDになります。 Docker Hubで他のリポジトリを作成していない限り、リポジトリは通常、DockerHubのユーザー名です。
docker commit -m "What did you do to the image"-a "Author Name" container-id repository/new_image_name
例えば:
docker commit -m "added mariadb-server"-a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb
**注:**画像を送信すると、新しい画像はローカル、つまりコンピューターに保存されます。このチュートリアルの後半では、Docker HubなどのDockerレジストリにイメージをプッシュして、自分や他の人がイメージを評価して使用できるようにする方法を学習します。
操作が完了したら、すぐにコンピューターにDockerイメージをリストすると、新しいイメージとそれから派生した古いイメージが表示されます。
docker images
出力は次のようになります。
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から作成することもできます。しかし、これは非常に複雑なプロセスであり、この記事の範囲を超えています。これについては、今後の記事で説明します。
Dockerをしばらく使用すると、コンピューター上にアクティブな(実行中の)コンテナーと非アクティブなコンテナーが多数あります。アクティブなものを表示するには、次を使用します。
docker ps
次のような出力が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c79cc556dd centos "/bin/bash"3 hours ago Up 3 hours silly_spence
すべてのコンテナ(アクティブおよび非アクティブ)を表示するには、 -a
スイッチを渡します。
docker ps -a
作成した最新のコンテナを表示するには、それを -l
スイッチに渡します。
docker ps -l
実行中またはアクティブなコンテナの停止は、次のように入力するだけです。
docker stop container-id
docker ps
コマンドを使用して、出力から container-id
を見つけることができます。
既存のイメージから新しいイメージを作成した後の次の論理的な手順は、選択した数人の友人、Docker Hubの全世界、またはアクセス可能な他のDockerレジストリと共有することです。イメージをDockerHubまたはその他のDockerレジストリにプッシュするには、そこにアカウントが必要です。
このセクションでは、DockerイメージをDockerHubにプッシュする方法について説明します。
Docker Hubでアカウントを作成するには、[Docker Hub](https://hub.docker.com/)に登録してください。次に、イメージをプッシュするために、最初にDockerHubにログインします。本人確認を求めるメッセージが表示されます。
docker login -u docker-registry-username
正しいパスワードを指定した場合、認証は成功するはずです。次に、次の方法を使用して独自のイメージをプッシュできます
docker push docker-registry-username/docker-image-name
完了するまでに少し時間がかかります。完了すると、出力は次のようになります。
The push refers to a repository [docker.io/finid/centos-mariadb]
670194 edfaf5: Pushed
5 f70bf18a086: Mounted from library/centos
6 a6c96337be1: Mounted from library/centos
...
画像をレジストリにプッシュすると、下の画像に示すように、アカウントのダッシュボードに表示されます。
プッシュを試みた結果、このタイプのエラーが発生した場合は、ログインしていない可能性があります。
The push refers to a repository [docker.io/finid/centos-mariadb]
e3fbbfb44187: Preparing
5 f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7 f18b442972b: Preparing
3 ce512daaf78: Preparing
7 aae4540b42d: Waiting
unauthorized: authentication required
ログインして、プッシュの試行を繰り返します。
Dockerは、この記事に記載されているものをはるかに超えていますが、CentOS7でDockerを使い始めるには十分です。ほとんどのオープンソースプロジェクトと同様に、Dockerは急速に開発されているコードベースから構築されているため、プロジェクト[ブログページ](https://blog.docker.com/)にアクセスして最新情報を入手する習慣をつけてください。
その他のCentOSチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。
参照:「CentOS7にDockerをインストールして使用する方法」
Recommended Posts