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

前書き ##

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

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

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

準備 ##

このチュートリアルに従うには、次の条件が必要です。

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

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。コマンドでルートアクセスが必要な場合は、先頭に「sudo」が表示されます。 [Ubuntu 16.04初期インストールチュートリアル](https://cloud.tencent.com/developer/article/1007167?from=10680)では、ユーザーを追加してsudoアクセスを提供する方法について説明しています。

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

公式のUbuntu16.04リポジトリで提供されているDockerインストールパッケージは、最新バージョンではない可能性があります。最新かつ最高のバージョンを入手するには、公式のDockerリポジトリからDockerをインストールしてください。このセクションでは、これを行う方法を説明します。

まず、公式DockerリポジトリのGPGキーをシステムに追加します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

DockerリポジトリをAPTソースに追加します。

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

次に、新しく追加されたリポジトリのDockerパッケージでパッケージデータベースを更新します。

sudo apt-get update

デフォルトのUbuntu16.04リポジトリではなく、Dockerリポジトリからインストールすることを確認してください。

apt-cache policy docker-ce

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

docker-ce:
 Installed:(none)
 Candidate:17.03.1~ce-0~ubuntu-xenial
 Version table:17.03.1~ce-0~ubuntu-xenial 500500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
  17.03.0~ ce-0~ubuntu-xenial 500500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

docker-ceはインストールされていませんが、インストールの候補はUbuntu16.04のDockerリポジトリからのものであることに注意してください。 docker-ceのバージョン番号は異なる場合があります。

最後に、Dockerをインストールします。

sudo apt-get install -y docker-ce

これで、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)

今すぐ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 ${USER}

新しいグループメンバーシップを適用するには、サーバーからログアウトして再度ログインするか、次のように入力します。

su - ${USER}

続行するには、ユーザーパスワードの入力を求められます。その後、次のように入力して、ユーザーが dockerグループに追加されたことを確認できます。

id -nG

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

sammy sudo docker

ログインしていない 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に関するシステム全体の情報を表示するには、次を使用します。

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で利用可能な画像を検索できます。たとえば、Ubuntuイメージを検索するには、次のように入力します。

docker search ubuntu

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

NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                            Ubuntu is a Debian-based Linux operating s...3808[OK]       
ubuntu-upstart                    Upstart is an event-based replacement for...61[OK]       
torusware/speedus-ubuntu          Always updated official Ubuntu docker imag...25[OK]
rastasheep/ubuntu-sshd            Dockerized SSH service, built on top ofof...24[OK]
ubuntu-debootstrap                debootstrap --variant=minbase --components...23[OK]       
nickistre/ubuntu-lamp             LAMP server on Ubuntu                           6[OK]
nickistre/ubuntu-lamp-wordpress   LAMP on Ubuntu with wp-cli installed            5[OK]
nuagebec/ubuntu                   Simple always updated Ubuntu docker images...4[OK]
nimmis/ubuntu                     This is a docker images different LTS vers...4[OK]
maxexcloo/ubuntu                  Docker base image built on Ubuntu with Sup...2[OK]
admiringworm/ubuntu               Base ubuntu images based on the official u...1[OK]
​
...

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

docker pull ubuntu

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

docker run ubuntu

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

docker images

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

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              c5f1cf30c96b        7 days ago          120.8 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

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

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

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

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

docker run -it ubuntu

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

root@d9b100f2f636:/#

**重要:**コマンドプロンプトのコンテナIDに注意してください。上記の例では、 d9b100f2f636です。

これで、コンテナ内で任意のコマンドを実行できます。たとえば、コンテナ内のパッケージデータベースを更新してみましょう。 root権限を持つコンテナで操作しているため、コマンドの前に sudoを付ける必要はありません。

apt-get update

次に、その中にアプリケーションをインストールします。たとえば、NodeJSをインストールしましょう。

apt-get install -y nodejs

手順6-コンテナの変更をDockerイメージに送信する

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

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

nodejsをUbuntuコンテナーにインストールすると、イメージを実行するコンテナーが作成されますが、コンテナーは、作成に使用したイメージとは異なります。

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

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 node.js"-a "Sunday Ogwu-Chinuwa" d9b100f2f636 finid/ubuntu-nodejs

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

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

docker images

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

finid/ubuntu-nodejs       latest              62359544c9ba        50 seconds ago      206.6 MB
ubuntu              latest              c5f1cf30c96b        7 days ago          120.8 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

上記の例では、** ubuntu-nodejs **は新しいイメージであり、DockerHubの既存のubuntuイメージから派生しています。サイズの違いは、加えられた変更を反映しています。この例では、NodeJSがすでにインストールされているという変更があります。したがって、次にNodeJSがプリインストールされたUbuntuでコンテナを実行する必要があるときは、新しいイメージを使用できます。イメージは、いわゆるDockerfileから作成することもできます。しかし、これは非常に複雑なプロセスであり、この記事の範囲を超えています。

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

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

docker ps

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

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

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

docker ps -a

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

docker ps -l

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

docker stop container-id

container-idは、 dockerpsコマンドの出力にあります。

ステップ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/ubuntu-nodejs]
e3fbbfb44187: Pushed
5 f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7 f18b442972b: Pushed
3 ce512daaf78: Pushed
7 aae4540b42d: Pushed

...

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

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

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

ログインして、プッシュの試行を繰り返します。

結論として ##

Dockerは、この記事に記載されているものをはるかに超えていますが、Ubuntu16.04でDockerを使い始めるには十分です。ほとんどのオープンソースプロジェクトと同様に、Dockerは急速に開発されているコードベースから構築されているため、最新情報についてはプロジェクト[ブログページ](https://blog.docker.com/)にアクセスしてください。

DOコミュニティの[その他のDockerチュートリアル](https://cloud.tencent.com/developer/column/1417/tag-10318?from=10680)も参照してください。

Linuxオープンソース情報チュートリアルの詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。

参照:「Ubuntu16.04にDockerをインストールして使用する方法」

Recommended Posts

Ubuntu20.04にDockerをインストールして使用する方法
Ubuntu16.04にDockerをインストールして使用する方法
CentOS7にDockerをインストールして使用する方法
Ubuntu18.04にComposerをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
Ubuntu18.04にMySQLWorkbenchをインストールして使用する方法
Ubuntu18.04にDockerComposeをインストールする方法
Ubuntu14.04にDockerを使用してPrometheusをインストールする方法
Ubuntu 16.04 /18.04にPycharmとIpythonをインストールする方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu16.04にElasticsearchをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
CentOS8にCurlをインストールして使用する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu16.04にMoodleをインストールする方法
Ubuntu14.04にSolr5.2.1をインストールする方法
Ubuntu16.04にTeamviewerをインストールする方法
Ubuntu20.04にMariaDBをインストールする方法
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にMonoをインストールする方法
Ubuntu20.04にGoをインストールする方法