GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Docker

Dockerは、Linuxコンテナーを搭載した拡張可能なオープンソースエンジンであり、アプリケーションのデプロイをポータブルで軽量、そして自給自足のコンテナーとして自動化します。このチュートリアルでは、コンピューティングインスタンスの設定と保​​護で概説されている手順を実行し、システムが最新であり、SSH経由でrootとしてLinodeにログインしていることを前提としています。

インストール

このガイドでは、Ubuntu12.04とCentOS6.4の両方にDockerをインストールする方法を説明します。Dockerはこれらの各ディストリビューションにリポジトリを提供し、インストールを簡単にします。

Ubuntu 12.04 64bit

ここでは、Ubuntu用のDockerが管理するリポジトリを追加し、ソフトウェアをインストールします。

  1. DockerはDockerのUbuntuリポジトリでパッケージとして利用できますが、64ビットのみです。まず、apt-keyを使用してDockerリポジトリキーを追加する必要があります :

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
    
  2. Dockerリポジトリをaptソースに追加します:

    echo "deb http://get.docker.io/ubuntu docker main" | sudo tee /etc/apt/sources.list.d/docker.list
    
  3. 次のコマンドを実行してapt-getupdateを実行し、lxc-dockerをインストールします :

    sudo apt-get update
    sudo apt-get install lxc-docker
    
  4. インストールが正常に完了したことを確認するには、サンプルのUbuntuコンテナを起動します。このコマンドは、欠落している画像を自動的に取得し、コンテナーを実行して、インタラクティブなbashセッションを提供します。

    sudo docker run -i -t ubuntu /bin/bash
    

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

    # docker run -i -t ubuntu /bin/bash
    Unable to find image 'ubuntu' (tag: latest) locally
    Pulling repository ubuntu
    8dbd9e392a96: Download complete
    b750fe79269d: Download complete
    27cf78414709: Download complete
    [email protected]:/#
  5. コンテナを終了するには、exitと入力します 。

CentOS664ビット

Dockerは、EPELリポジトリでdocker-ioとして入手できます。 64ビット専用のパッケージ。

  1. EPELリポジトリを追加するには、latestepel-releaseパッケージをインストールします。

  2. Dockerをインストールするには、次のコマンドを実行します。

    sudo yum -y install docker-io
    
  3. Dockerデーモンを起動するには、serviceを呼び出します :

    sudo service docker start
    
  4. Dockerデーモンを起動時に起動する場合は、次のコマンドを発行します。

    sudo chkconfig docker on
    
  5. インストールが正常に完了したことを確認するには、サンプルのFedoraコンテナーを起動します。このコマンドは、欠落している画像を自動的に取得し、コンテナーを実行して、インタラクティブなbashセッションを提供します。

    sudo docker run -i -t fedora /bin/bash
    
  6. コンテナを終了するには、exitと入力します 。

Dockerで何ができますか?

Dockerを使用すると、ユーザーはアプリケーションと構成を軽量イメージにパッケージ化して、ポータブルコンテナーとしてデプロイできます。

HelloWorld

「helloworld」を出力するDockerコンテナーを実行するには、次のコマンドを実行します。

docker run ubuntu /bin/echo hello world

hello worldを返す必要があります 。

これにより、Dockerにいくつかのことを実行するように指示されます。

  1. 画像(Ubuntu)がまだローカルに存在しない場合は、DockerIndexからダウンロードしてください。
  2. 読み取り/書き込みファイルシステムとネットワークインターフェイスを備えたベースUbuntuイメージを使用して新しいコンテナを作成します。
  3. コンテナにIPアドレスを割り当てます。コンテナとの間でトラフィックを転送するようにNATを設定します。
  4. コマンド/bin/echo hello worldを実行します 、出力を印刷します。
  5. メインプロセスが完了すると、コンテナは終了します。

Nginx用のDockerfileの書き込み

イメージをビルドするとき、DockerはDockerfileという名前のファイルに設定された命令に従います。 。ファイルにはDockerfileという名前を付ける必要があることに注意してください また、Dockerfileに必要なすべてのファイルまたはフォルダは、Dockerfileと同じディレクトリにある必要があります。

echoのようなプログラムを実行する Dockerコンテナでの使用は非常に簡単です。ただし、Nginxなどのサーバーとして機能するプログラムの場合は、プログラムが自己デーモン化しないように構成されていることを確認する必要があります。

これはNginxのDockerfileの例です:

FROM        ubuntu:12.04
MAINTAINER  Jon Chen "[email protected]"

RUN         echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN         apt-get update
RUN         apt-get install -y nginx

RUN         echo "\ndaemon off;" >> /etc/nginx/nginx.conf
VOLUME      /etc/nginx/sites-enabled
VOLUME      /var/log/nginx

EXPOSE      80
CMD         ["nginx"]

Dockerfileの構文は次のようになります:

# Comment
INSTRUCTION arguments

Dockerは、Dockerfile命令を上から下に順番に実行します。最初の指示は必須 FROMである 、新しいイメージを作成するベースイメージを指定します:

FROM ubuntu:12.04

これにより、公式のUbuntu12.04イメージがベースイメージとして設定されます。また、MAINTAINER命令を使用して、画像の作成者を定義することもできます。

MAINTAINER Jon Chen "[email protected]"

次に、RUN 命令はイメージに対してコマンドを実行し、結果をコミットします。各コミットは保存され、次の命令に使用されます。たとえば、このRUN 行は/etc/apt/sources.listの内容を置き換えます deb http://archive.ubuntu.com/ubuntu precise main universeの画像 :

RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list

Nginxなどのプログラムで覚えておくべき重要なことは、プログラムがデーモンとして実行されないようにすることです。デーモンとしてのNginxのデフォルトの動作は、ワーカープロセスをフォークしてから、マスタープロセスを終了することです。 Dockerは元のプロセスのPIDのみを監視するため、コンテナーは永続的に実行されるのではなく、途中で停止します。デーモン化を無効にするには、daemonoff構成ディレクティブを/etc/nginx/nginx.confに追加します :

RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

コンテナ内のポートをコンテナ外に公開するには、EXPOSE命令を使用します。

EXPOSE 80

CMD命令は、コンテナの起動時に実行されるデフォルトのコマンドを定義します。この例では、Nginxを実行します:

CMD ["nginx"]

デフォルトでは、Dockerコンテナには永続ストレージがありません。コンテナ間でデータを共有するには、VOLUME機能を使用します:

VOLUME /etc/nginx/sites-enabled
VOLUME /var/log/nginx

ホストからコンテナにディレクトリをマウントするには、コンテナを実行するときに、コマンドラインでホストディレクトリ、対応するコンテナディレクトリ、およびディレクトリのアクセス許可を指定する必要があります。

-v=[]: Create a bind mount with: [host-dir]:[container-dir]:[rw|ro].
If "host-dir" is missing, then docker creates a new volume.

このイメージを作成するには、Dockerfileと同じディレクトリで次のコマンドを実行します。 -t repo/tagを使用して、画像のリポジトリとタグを指定することもできます :

docker build -t bsdlp/nginx .

次のコマンドを実行して、/etc/nginx/sites-enabledを追加します および/var/log/nginx ホストからコンテナへのボリュームとして、コンテナをデーモンとして起動し、コンテナからポート80をホストのポート80として公開します。

docker run -d -p 80:80 -v /etc/nginx/sites-enabled:/etc/nginx/sites-enabled -v /var/log/nginx:/var/log/nginx bsdlp/nginx

詳細情報

このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。

  • Dockerのスタートガイド
  • GitHubのDocker
  • 公式のDockerイメージインデックス

Docker
  1. Ubuntu 20.04でのDockerの問題?

  2. Dockerのインストール(Ubuntu)

  3. Ubuntu 18.04にDockerをインストールする方法は?

  1. Ubuntu18.04にDockerをインストールする方法

  2. Ubuntu16.04にDockerをインストールする方法

  3. Ubuntu 18.04 / Ubuntu 18.10 /Ubuntu19.04にDockerをインストールする方法

  1. Ubuntu18.04にKubernetesをインストールする方法

  2. Ubuntu18.04にDockerComposeをインストールする方法

  3. UbuntuにRancherをインストールする方法