CentOS7にDockerをインストールして使用する方法

前書き

Dockerは、仮想マシンと同じように、コンテナー内でアプリケーションプロセスを簡単に実行できるようにするアプリケーションですが、より移植性が高く、リソースに優しく、ホストオペレーティングシステムへの依存度が高くなります。

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

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

準備 ##

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

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。

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

公式の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で使用する方法について説明します。

ステップ2-Sudoなしで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を前に追加してください。

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

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

ステップ4-Dockerミラーを使用する

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 *は技術用語です)。

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

テストメッセージを送信した後、前の手順で 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

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

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から作成することもできます。しかし、これは非常に複雑なプロセスであり、この記事の範囲を超えています。これについては、今後の記事で説明します。

ステップ7-Dockerコンテナを一覧表示する

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を見つけることができます。

ステップ8-DockerイメージをDockerリポジトリにプッシュします

既存のイメージから新しいイメージを作成した後の次の論理的な手順は、選択した数人の友人、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

CentOS7にDockerをインストールして使用する方法
Ubuntu20.04にDockerをインストールして使用する方法
CentOS8にComposerをインストールして使用する方法
CentOS8にCurlをインストールして使用する方法
Ubuntu16.04にDockerをインストールして使用する方法
CentOS 8 / RHEL8にCockpitをインストールして使用する方法
CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVNCをインストールして構成する方法
Ubuntu18.04にCurlをインストールして使用する方法
Ubuntu18.04にComposerをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
CentOS8にRedisをインストールして構成する方法
CentOS8にNode.jsとnpmをインストールする方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
centos7.2.1511にjdk1.8.0_151とmysql5.6.38をインストールする方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
RHEL 8 / CentOS8にDockerCEをインストールする方法
centosにtomcatをインストールおよびアンインストールする方法
CentOS8にRedmineをインストールして構成する方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS6.8でdockerをインストールして使用する
CentOS8にElasticsearchをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOS8にMariaDBをインストールする方法
CentOS7にMongoDBをインストールする方法
CentOS8にOdoo13をインストールする方法
CentOS8にApacheをインストールする方法
CentOS8にOpenCVをインストールする方法