Linuxのインストール後の手順
推定読み取り時間:15分
このセクションでは、Dockerで動作するようにLinuxホストを設定するためのオプションの手順
- 非rootユーザーとしてDockerを管理する
- 起動時に起動するようにDockerを設定
- 別のストレージエンジンを使用する
- デフォルトログドライバの設定
- Dockerデーモンが接続をリッスンする場所を設定する
- systemdユニットファイルを使用したリモートアクセスの設定
- デーモンでリモートアクセスを設定します。json
- DockerデーモンでIpv6を有効にする
- トラブルシューティング
- カーネルの互換性
- Dockerデーモンに接続できません
- 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
- Disablednsmasq
- Ubuntu
- RHEL、CentOS、またはFedora
- ファイアウォールを介したリモートAPIへのアクセスを許可する
- カーネルがcgroupスワップ制限機能をサポートしていません
非rootユーザーとしてDockerを管理する
DockerデーモンはTCPポートの代わりにUnixソケットにバインドします。 デフォルトでは、Unixソケットはユーザーroot
sudo
を使用してのみアクセスできます。 Dockerデーモンは常にroot
ユーザーとして実行されます。p>
docker
sudo
docker
というUnixgroupを作成し、それにユーザーを追加します。 Dockerデーモンが起動すると、docker
グループのメンバーがアクセスできるUnixソケットが作成されます。警告
docker
root
ユーザーと同等の権限を付与します。 これがシステムのセキュリティにどのように影響するかの詳細については、seeDocker Daemon Attack Surface注意:Root権限なしでDockerを実行するには、非rootユーザー(ルートレスモード)としてDockerデーモンを確認します。p>
-
docker
グループを作成し、ユーザーを追加するには、-
docker
docker
グループに追加します。$ sudo usermod -aG docker $USER
-
ログアウトしてログインし、グループメンバーシップが再評価されるようにします。仮想マシンでテストする場合は、変更を有効にするために仮想マシンを再起動する必要がある場合があります。
変更を有効にするには、仮想マ
x WindowsなどのデスクトップLinux環境では、セッションを完全にログアウトしてから再度ログインします。
Linuxでは、次のコマンドを実行してグループへの変更を有効にすることもできます:p>
$ newgrp docker
-
docker
sudo
sudo
コマンドを実行できることを確認します。p>$ docker run hello-world
このコマンドは、テストイメージをダウンロードし、コンテナ内で実行します。 Thecontainerが実行されると、情報メッセージが出力されて終了します。
最初に
sudo
を使用してDocker CLIコマンドを実行した場合、docker
~/.docker/
sudo
sudo
コマンド。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.service
systemdユニットファイル、またはsystemdを使用しないLinuxディストリビューションに推奨されるdaemon.json
ファイルを使用して行うことができます。systemd vsデーモン。json
systemd
daemon.json
ファイルの両方を使用して接続をリッスンするようにDockerを構成すると、競合が発生し、Dockersystemdユニットファイルを使用したリモートアクセスの設定
-
コマンド
sudo systemctl edit docker.service
docker.service
のオーバーライドファイ -
次の行を追加または変更し、独自の値を置き換えます。p>
ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
-
ファイルを保存します。p>
-
systemctl
設定をリロードします。$ sudo systemctl daemon-reload
-
Dockerを再起動します。
$ sudo systemctl restart docker.service
-
netstat
dockerd
が設定されたポートでリッスンしていることを確認します。$ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
デーモンでリモートアクセスを設定します。json
-
UNIXソケットとIPアドレスに接続するには、
hosts
配列を次のように設定します。{ "hosts": }
-
Dockerを再起動します…..
-
netstat
dockerd
が設定されたポートでリッスンしていることを確認します。$ 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
~/.bashrc
DOCKER_HOST
変数が設定されていないこと。DOCKER_HOST
が意図したとおりに設定されている場合は、Dockerデーモンがリモートホストで実行されていること、およびファイアウォールまたはネットワーIP転送の問題systemd-network
systemd
バージョン219以上では、Dockerコンテナがネットワークにアクセsystemd
net.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.1
127.0.1.1
dnsmasq
インスタンスを使用してDNS要求をキャッe68df6be61″>。dnsmasq
サービスはupDNSルックアップを高速化し、DHCPサービスも提供します。 なぜなら、Dockerコンテナは127.0.0.1
などのループバックアドレスを自分自身に解決し、独自のループバックアドレスでDNSサーバーを実行している可能性は非常に低いからです。Dockerが/etc/resolv.conf
で参照されているDNSサーバーが完全に機能するDNSサーバーではないことを検出した場合、次の警告が発生し、DockerはDNS解決のために8.8.8.8
8.8.4.4
でGoogleが提供するpublicDNSサーバーを使用します。この警告が表示された場合は、まずdnsmasq
:$ ps aux |grep dnsmasq
コンテナがネットワークの内部にあるホストを解決する必要があ十分ではない。 Dockerが使用するDNSサーバーを指定するか、NetworkManagerで
dnsmasq
を無効にすることができます。- Dockerが使用するDNSサーバーを指定するか、
- NetworkManagerで
dnsmasq
を無効にすることができます。 これを行うと、NetworkManageraddsあなたの真のDNSネームサーバーに/etc/resolv.conf
dnsmasq
。
これらのメソッドのいずれかを使用する必要があります。設定ファイルのデフォルトの場所は
/etc/docker/daemon.json
--config-file
/etc/docker/daemon.json
/etc/docker/daemon.json
ファイルで、Docker daemonconfigurationを制御します。$ sudo nano /etc/docker/daemon.json
-
-
1つ以上のIPアドレスを値として持つキーを追加します。 ファイルに既存の内容がある場合は、
dns
行を追加または編集するだけです。内部DNSサーバーがパブリックIPアドレスを解決できない場合は、少なくとも1つのDNSサーバーを含めて、Docker Hubに接続して、コンテナがインターネットドメイン名を解決できるようにします。ファイルを保存して閉じます。
-
Dockerデーモンを再起動します。/p>
$ sudo service docker restart
-
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デーモンの設定を変更して特定のアドdnsmasq
networkmanagerで。p>
-
/etc/NetworkManager/NetworkManager.conf
ファイルを編集します。 -
行の先頭に
#
dns=dnsmasq
行をコメントアウトします。p># dns=dnsmasq
ファイルを保存して閉じます。
-
NetworkManagerとDockerの両方を再起動します。 別の方法として、再起動することができますあなたのシステム。
$ sudo restart network-manager$ sudo restart docker
RHEL、CentOS、またはFedora
RHEL、CentOS、またはFedoraでdnsmasq
を無効にするには:
-
dnsmasq
を無効にするには:-
dnsmasq
を無効にするには:-
dnsmasq
を無効にするには:- dnsmasqサービス:/p>
$ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
-
Thered Hatドキュメントを使用してDNSサーバーを手動で設定します。
ファイアウォールを介したリモートAPIへのアクセスを許可する
Dockerを実行しているのと同じホストでファイアウォールを実行し、別のホス>それ以外の場合。
二つの一般的なファイアウォールデーモンは、ufw(複雑でないファイアウォール)(Ubuntuシステムでよく使用される)とfirewalld(RPMベースのシステムでよく使用される)である。 お使いのOSとファイアウォールのドキュメントを参照してくださいが、以下の情報は、あなたが始めるのに役立つかもしれません。 これらのオプションはかなり優れており、システムをよりロックダウンする別の構成を使用することができます。UFW:設定で
DEFAULT_FORWARD_POLICY="ACCEPT"
を設定します。firewalld:ポリシーに次のようなルールを追加します(1つはインカム要求、もう1つは送信要求)。 インターフェイス名とチェーン名が正しいことを確認してください。<direct> </direct>
- dnsmasqサービス:/p>
カーネルがcgroupスワップ制限機能をサポートしていません
UbuntuまたはDebianホストでは、画像で作業すると、次のようなメッ
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
この警告は、RPMベースのシステムでは発生しません。これらの機能が必要ない場合は、警告を無視することができます。
これらの機能が必要ない場合は、警告を無視することができます。 UbuntuまたはDebianでこれらの機能を有効にするには、次の手順に従います。 メモリとスワップ会計では、Dockerが実行されていなくても、使用可能なメモリ全体の約1%のオーバーヘッドと全体的なパフォーマンスの10%の低下が発生します。UbuntuまたはDebianホストに
sudo
権限を持つユーザーとしてログインします。 -
-
/etc/default/grub
GRUB_CMDLINE_LINUX
行を追加または編集して、次の二つのキーと値のペアを追加します。GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
ファイルを保存して閉じます。
-
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
-