Articles

Linuxのインストール後の手順

推定読み取り時間:15分

このセクションでは、Dockerで動作するようにLinuxホストを設定するためのオプションの手順

非rootユーザーとしてDockerを管理する

DockerデーモンはTCPポートの代わりにUnixソケットにバインドします。 デフォルトでは、Unixソケットはユーザーrootsudoを使用してのみアクセスできます。 Dockerデーモンは常にrootユーザーとして実行されます。p>

dockersudodockerというUnixgroupを作成し、それにユーザーを追加します。 Dockerデーモンが起動すると、dockerグループのメンバーがアクセスできるUnixソケットが作成されます。警告

dockerrootユーザーと同等の権限を付与します。 これがシステムのセキュリティにどのように影響するかの詳細については、seeDocker Daemon Attack Surface注意:Root権限なしでDockerを実行するには、非rootユーザー(ルートレスモード)としてDockerデーモンを確認します。p>

  1. dockerグループを作成し、ユーザーを追加するには、

    1. dockerdockerグループに追加します。

      $ sudo usermod -aG docker $USER
    2. ログアウトしてログインし、グループメンバーシップが再評価されるようにします。仮想マシンでテストする場合は、変更を有効にするために仮想マシンを再起動する必要がある場合があります。

      変更を有効にするには、仮想マ

      x WindowsなどのデスクトップLinux環境では、セッションを完全にログアウトしてから再度ログインします。

      Linuxでは、次のコマンドを実行してグループへの変更を有効にすることもできます:p>

      $ newgrp docker 
    3. dockersudosudoコマンドを実行できることを確認します。p>

      $ docker run hello-world

      このコマンドは、テストイメージをダウンロードし、コンテナ内で実行します。 Thecontainerが実行されると、情報メッセージが出力されて終了します。

      最初にsudoを使用してDocker CLIコマンドを実行した場合、docker~/.docker/sudosudoコマンド。

      WARNING: Error loading config file: /home/user/.docker/config.json -stat /home/user/.docker/config.json: permission denied

      この問題を解決するには、~/.docker/ディレクトリを削除するか(自動的に再作成されますが、カスタム設定は失われます)、以下のコ:

      $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R$ sudo chmod g+rwx "$HOME/.docker" -R

    起動時に起動するようにDockerを設定

    最新のLinuxディストリビューション(RHEL、CentOS、Fedora、Debian、Ubuntu16.04andhigher)は、systemdを使用して、システ DebianおよびUbuntuでは、Dockerサービスはデフォルトで起動時に起動するように構成されています。 Otherdistrosの起動時にDockerとContainerdを自動的に起動するには、以下のコマンドを使用します。

    $ sudo systemctl enable docker.service$ sudo systemctl enable containerd.service

    この動作を無効にするには、代わりにdisable

    $ sudo systemctl disable docker.service$ sudo systemctl disable containerd.service

    HTTPプロキシを追加したり、dockerランタイムファイルに別のディレクトリまたはパーティションを設定したり、その他のカスタマ

    別のストレージエンジンを使用する

    別のストレージエンジンについては、ストレージドライバーを参照してください。デフォルトのストレージエンジンとサポートされているストレージエンジンの一覧は、ホストのLinuxディストリビューションと使用可能なカーネルドライバに依存します。

    デフォルトログドライバの設定

    Dockerは、一連のログドライバを介してホスト上で実行されているすべてのコンテナからのログデータをtocollect デフォルトのログドライバーjson-fileは、ホストファイルシステム上のjson形式のファイルにログデータを書き込みます。 時間の経過とともに、これらのログファイルは拡張されますディスクリソースの潜在的な枯渇につながります。

    このような問題を軽減するには、json-fileロギングドライバーをログローテーションを有効にするように設定するか、デフォルトでログローテーションを実行する”ローカル”ロギングドライバーとして類似のロギングドライバーを使用するか、リモートロギングアグリゲーターにsendslogsするロギングドライバーを使用します。

    Dockerデーモンが接続をリッスンする場所を設定する

    デフォルトでは、DockerデーモンはUNIXソケット上の接続をリッスンして、ローカルクライアントからのacceptrequestsを受け取ります。 DOCKERがUNIXソケットと同様にIPアドレスとポートをリッスンするように設定することで、リモートホストからの要求を受け入れることができます。 この設定オプションの詳細については、Docker CLIリファレンス記事の”Dockerを別のホスト/ポートまたはunixソケットにバインドする”セクションを参照してくださ

    接続を保護する

    リモートホストからの接続を受け入れるようにDockerを設定する前に、dockerをネットワークに開くことのセキュリテ 接続を保護するための手順が実行されていない場合、リモートの非rootユーザーがホスト上でrootアクセス権を取得することができます。 TLS証明書を使用してこの接続を保護する方法の詳細については、Docker daemon socketを保護する方法に関するこの記事を参照してください。

    リモート接続を受け入れるようにDockerを設定するには、RedHat、CentOS、Ubuntu、SLESの最近のバージョンなど、systemdを使用するLinuxディストリビューションのdocker.servicesystemdユニットファイル、またはsystemdを使用しないLinuxディストリビューションに推奨されるdaemon.jsonファイルを使用して行うことができます。

    systemd vsデーモン。json

    systemddaemon.jsonファイルの両方を使用して接続をリッスンするようにDockerを構成すると、競合が発生し、Docker

    systemdユニットファイルを使用したリモートアクセスの設定

    1. コマンドsudo systemctl edit docker.servicedocker.serviceのオーバーライドファイ

    2. 次の行を追加または変更し、独自の値を置き換えます。p>

      ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
    3. ファイルを保存します。p>

    4. systemctl設定をリロードします。

       $ sudo systemctl daemon-reload
    5. Dockerを再起動します。

      $ sudo systemctl restart docker.service
    6. netstatdockerdが設定されたポートでリッスンしていることを確認します。

      $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd

    デーモンでリモートアクセスを設定します。json

    1. UNIXソケットとIPアドレスに接続するには、hosts配列を次のように設定します。

      { "hosts": }
    2. Dockerを再起動します…..

    3. netstatdockerdが設定されたポートでリッスンしていることを確認します。

      $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd

    DockerデーモンでIpv6を有効にする

    DockerデーモンでIpv6を有効にするには、次を参照してくださ

    トラブルシューティング

    カーネルの互換性

    カーネルがバージョン3.10より古い場合、またはいくつかのモジュールが欠落している場合、Docker カーネルの互換性を確認するには、check-config.shスクリプトをダウンロードして実行します。

    $ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh$ bash ./check-config.sh

    スクリプトはLinuxでのみ動作し、macOSでは動作しません。

    Dockerデーモンに接続できません

    次のようなエラーが表示されると、Dockerクライアントが別のホスト上のDockerデーモンに接続するように設定され、そのホクライアントがどのホストに接続するように構成されているかを確認するには、環境のDOCKER_HOST変数の値を確認します。

    $ env | grep DOCKER_HOST

    このコマンドが値を返すと、Dockerクライアントはそのホストで実行されているaDockerデーモンに接続するように設 設定されていない場合、Dockerクライアントはローカルホスト上で実行されているDockerデーモンに接続されます。 エラーに設定されている場合は、次のコマンドを使用して設定を解除します。

    $ unset DOCKER_HOST

    ~/.bashrc~/.profile~/.bashrc~/.profile~/.bashrc~/.bashrc~/.bashrc~/.bashrcDOCKER_HOST変数が設定されていないこと。

    DOCKER_HOSTが意図したとおりに設定されている場合は、Dockerデーモンがリモートホストで実行されていること、およびファイアウォールまたはネットワーIP転送の問題

    systemd-networksystemdバージョン219以上では、Dockerコンテナがネットワークにアクセsystemdnet.ipv4.conf.<interface>.forwarding)のデフォルトはオフになります。 この設定はIP転送を防止します。 また、コンテナ内のnet.ipv4.conf.all.forwarding設定を有効にするDockerの動作と競合します。RHEL、CentOS、Fedoraでこれを回避するには、Dockerホストの/usr/lib/systemd/network//usr/lib/systemd/network/80-container-host0.networkセクション内に追加します。

    ...IPForward=kernel# ORIPForward=true

    この設定では、コンテナからのIP転送が期待どおりに許可されます。

    resolvで見つかったDNSリゾルバ。これは、127.0.0.1127.0.1.1dnsmasqインスタンスを使用してDNS要求をキャッe68df6be61″>。 dnsmasqサービスはupDNSルックアップを高速化し、DHCPサービスも提供します。 なぜなら、Dockerコンテナは127.0.0.1などのループバックアドレスを自分自身に解決し、独自のループバックアドレスでDNSサーバーを実行している可能性は非常に低いからです。Dockerが/etc/resolv.confで参照されているDNSサーバーが完全に機能するDNSサーバーではないことを検出した場合、次の警告が発生し、DockerはDNS解決のために8.8.8.88.8.4.4でGoogleが提供するpublicDNSサーバーを使用します。この警告が表示された場合は、まずdnsmasq:

    $ ps aux |grep dnsmasq

    コンテナがネットワークの内部にあるホストを解決する必要があ十分ではない。 Dockerが使用するDNSサーバーを指定するか、NetworkManagerでdnsmasqを無効にすることができます。

    • Dockerが使用するDNSサーバーを指定するか、
    • NetworkManagerでdnsmasqを無効にすることができます。 これを行うと、NetworkManageraddsあなたの真のDNSネームサーバーに/etc/resolv.confdnsmasq

    これらのメソッドのいずれかを使用する必要があります。設定ファイルのデフォルトの場所は/etc/docker/daemon.json--config-file/etc/docker/daemon.json/etc/docker/daemon.jsonファイルで、Docker daemonconfigurationを制御します。

    $ sudo nano /etc/docker/daemon.json
  2. 1つ以上のIPアドレスを値として持つキーを追加します。 ファイルに既存の内容がある場合は、dns行を追加または編集するだけです。内部DNSサーバーがパブリックIPアドレスを解決できない場合は、少なくとも1つのDNSサーバーを含めて、Docker Hubに接続して、コンテナがインターネットドメイン名を解決できるようにします。

    ファイルを保存して閉じます。

  3. Dockerデーモンを再起動します。/p>

    $ sudo service docker restart
  4. Dockerがanimageをプルしようとすることで外部IPアドレスを解決できることを確認します:必要に応じて、Dockerコンテナが内部ホスト名をpingして解決できることを確認します。

    $ docker run --rm -it alpine ping -c4 <my_internal_host>PING google.com (192.168.1.2): 56 data bytes64 bytes from 192.168.1.2: seq=0 ttl=41 time=7.597 ms64 bytes from 192.168.1.2: seq=1 ttl=41 time=7.635 ms64 bytes from 192.168.1.2: seq=2 ttl=41 time=7.660 ms64 bytes from 192.168.1.2: seq=3 ttl=41 time=7.677 ms

Disablednsmasq

Ubuntu

Dockerデーモンの設定を変更して特定のアドdnsmasqnetworkmanagerで。p>

  1. /etc/NetworkManager/NetworkManager.confファイルを編集します。

  2. 行の先頭に#dns=dnsmasq行をコメントアウトします。p>

    # dns=dnsmasq

    ファイルを保存して閉じます。

  3. NetworkManagerとDockerの両方を再起動します。 別の方法として、再起動することができますあなたのシステム。

    $ sudo restart network-manager$ sudo restart docker
RHEL、CentOS、またはFedora

RHEL、CentOS、またはFedoraでdnsmasqを無効にするには:

  1. dnsmasqを無効にするには:

    1. dnsmasqを無効にするには:

      1. dnsmasqを無効にするには:

        1. dnsmasqサービス:/p>
          $ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
        2. Thered Hatドキュメントを使用してDNSサーバーを手動で設定します。

        ファイアウォールを介したリモートAPIへのアクセスを許可する

        Dockerを実行しているのと同じホストでファイアウォールを実行し、別のホス>それ以外の場合。

        二つの一般的なファイアウォールデーモンは、ufw(複雑でないファイアウォール)(Ubuntuシステムでよく使用される)とfirewalld(RPMベースのシステムでよく使用される)である。 お使いのOSとファイアウォールのドキュメントを参照してくださいが、以下の情報は、あなたが始めるのに役立つかもしれません。 これらのオプションはかなり優れており、システムをよりロックダウンする別の構成を使用することができます。UFW:設定でDEFAULT_FORWARD_POLICY="ACCEPT"を設定します。firewalld:ポリシーに次のようなルールを追加します(1つはインカム要求、もう1つは送信要求)。 インターフェイス名とチェーン名が正しいことを確認してください。

        <direct> </direct>
      2. カーネルがcgroupスワップ制限機能をサポートしていません

        UbuntuまたはDebianホストでは、画像で作業すると、次のようなメッ

        WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

        この警告は、RPMベースのシステムでは発生しません。これらの機能が必要ない場合は、警告を無視することができます。

        これらの機能が必要ない場合は、警告を無視することができます。 UbuntuまたはDebianでこれらの機能を有効にするには、次の手順に従います。 メモリとスワップ会計では、Dockerが実行されていなくても、使用可能なメモリ全体の約1%のオーバーヘッドと全体的なパフォーマンスの10%の低下が発生します。UbuntuまたはDebianホストにsudo権限を持つユーザーとしてログインします。

    2. /etc/default/grubGRUB_CMDLINE_LINUX行を追加または編集して、次の二つのキーと値のペアを追加します。

      GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

      ファイルを保存して閉じます。

    3. GRUBを更新します。/p>

      $ sudo update-grub

      GRUB設定ファイルの構文が正しくない場合、エラー occurs.In この場合は、手順2と3を繰り返します。変更は、システムの再起動時に有効になります。

      変更は、システムの再起動時に有効になります。

    • イメージを構築し、コンテナ化されたアプリケーションとして実行する方法を学ぶために、Get startedトレーニングモジュールを見てみましょう。
    • Dockerを使用した開発のトピックを確認して、Dockerを使用して新しいアプリケーションを構築する方法を学びます。

    Docker,Docker documentation,requirements,apt,installation,ubuntu,install,uninstall,upgrade,update