web-dev-qa-db-ja.com

CentOSでDocker_Optsを設定する

Amazon linux(centos)を実行しているホストマシンでtcp://0.0.0.0/4243をリッスンするようにdockerを設定する必要があります。私が見たすべてのドキュメントは、次のコマンドを実行するように言っています

echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker

これにより、正しいdocker_optsが/ etc/default/dockerに書き込まれます。これを実行しましたが、Dockerを再起動すると127.0.0.1をリッスンしません

次のように入力して、Dockerを正しく実行できます。

Sudo /usr/bin/docker -H tcp://0.0.0.0:4243 -d &

それは機能しますが、毎回指定することなく、tcp://0.0.0.0:4243でリッスンするデフォルトオプションが必要です。

Dockerは/ etc/default/dockerファイルを完全に無視しているようで、設定は無視されています。また、ファイルを/etc/default/docker.ioおよび/ etc/default/docker-ioに書き込もうとしました(実際に多くのことが起こるとは思っていませんでした)

だけでdockerを起動できるようにする必要があります

service docker start

または、現在の展開プレイブックで問題が発生します。

DOCKER_OPTSを設定するためにできること、およびdockerを再起動するたびに設定する必要がないことについての考えはありますか?

21
Colin Murphy

RHEL7では、docker.serviceユニットファイルを変更する代わりに、/ etc/sysconfig/dockerファイルを編集することもできます。

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS=--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:4243

dockerサービスを再起動します。

私にとって、これはサービススクリプトを変更するよりも信頼性があります。

38
Fabien Balageas

CentOS 7(RHEL 7)の場合:

Systemd docker.serviceユニットファイルを見つけます。鉱山の場所:/usr/lib/systemd/system/docker.service

このファイルで、[Service]セクションのExecStart=で始まる行を編集します。 「-H tcp://0.0.0.0:4243」を行に追加します。 (上記のDOCKER_OPTS行の例のように、-HとIPアドレスの間に「=」がないことに注意してください。)

私のシステムでは、docker.serviceの内容全体は次のようになります。

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576

[Install]
Also=docker.socket

(すべてのIPアドレスではなく、ループバックでリッスンするにはDockerのみが必要です。)

Systemdユニットファイルにこの編集を行い、systemctl restart dockerを介してDockerサービスを再起動すると、次のプロセスが表示されます。

root 8574 0.0 0.2 321708 10564 ? Ssl 00:42 0:00 /usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// --selinux-enabled

ご覧のとおり、構成されたTCPアドレスでリッスンし、再起動およびサービスの停止/開始後も持続します。

14
Will Dennis

これにはいくつの答えがあるのか​​信じられません。だからここに別のものがあります:

  • CentOS 7.3
  • Dockerバージョン= 17.03.1-ce、APIバージョン= 1.27

この答えは、この answer とthis one とthis one の組み合わせを信じられないほど再生することに基づいています。

  1. Sudo vim /usr/lib/systemd/system/docker.service
  2. insert "-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock" enter image description here
  3. Sudo systemctl daemon-reload //上記のファイルの変更を更新します
  4. Sudo systemctl restart docker
  5. netstat -l | grep 4243 //ポートが開いていることを確認
  6. jenkins Dockerプラグインなど、tcp:// [server_ip]:4243などのどこかからdockerホストに接続します
9
Brian Ogden

編集 /etc/docker/daemon.json は、サポートされている新しい方法のようです。

4
DomQ

CentOS 7上のDocker 1.7.1では、/usr/lib/systemd/system/docker.serviceまたは/etc/sysconfig/dockerの変更も機能しませんでした。 systemdではソケットを設定しているようですので、グループを変更するには、/usr/lib/systemd/system/docker.socketでSocketGroupを編集する必要があります

[Unit]
Description=Docker Socket for the API
PartOf=docker.service

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=jenkins

[Install]
WantedBy=sockets.target
3
Joseph Mulloy

デフォルトのブリッジインターフェースdocker0を変更して独自のブリッジインターフェースbr0を使用する必要があり、そのファイルに次のコンテンツを入れると問題が解決しました。

CentOS 7.2およびdocker 1.10.3

/usr/lib/systemd/system/docker.service.d/docker.conf

[Service] 
ExecStart=
ExecStart=/usr/bin/docker daemon --bridge=br0 -H fd://

そしてもちろん、以下を実行する必要があります:

Sudo systemctl daemon-reload

Sudo systemctl restart docker 

ip link del docker0
1
Dave Side

CentOSでは、ファイル/ etc/sysconfig/dockerで以下のオプションを設定してみてください。

other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

次に、ドッカーを再起動して、ポートが開いているかどうかを確認してみてください

netstat -plt | grep 4243 

これはリスニングする場合にリストする必要があります

1
Basav

私はcentos 7に取り組んでいます。

Docker構成ファイルにinsecure-registryを追加したいだけで、/ etc/sysconfig/dockerの「DOCKER_OPTS =-insecure-registry = ....」を変更しましたが、機能しませんでした。

構成にINSECURE_REGISTRYがあるので、この変数を変更しました。

したがって、ここではDOCKER_OPTSは機能しません。

しかし、それは私のunbuntu 14で機能しました!

Dockerを使用するとき、本当にイライラします!

0
Jiaqi Feng

1、/ usr/lib/systemd/system/docker.serviceを編集して、serviceセクションに2つのパラメーターを追加します。

# vim /usr/lib/systemd/system/docker.service

[サービス]

ExecStart =

ExecStart =/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

2、構成を再読み込みして、Dockerを再起動します。

# systemctl daemon-reload
# systemctl restart docker

3、成功を確認するには、次の応答が返されるかどうかを確認します。

# ps -ef|grep docker

ルート26208 1 0 23:51? 00:00:00/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

Centos 7でDocker Remote APIを公開しますか? からの参照

0
faryang

https://docs.docker.com/engine/admin/configuring/ に基づく

Sudo mkdir /etc/systemd/system/docker.service.d
Sudo vi /etc/systemd/system/docker.service.d/docker.conf

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -D -H tcp://127.0.0.1:4243

Sudo systemctl daemon-reload
Sudo systemctl restart docker

0
Ebrahim Moshaya

this Brian Ogdenによる回答は以前は働いていましたが、今日の環境ではおそらく動作しませんでした。おそらく、Docker、カーネル、OSの更新バージョンでは動作しませんでした。

CentOS 7.4.1708 (on AWS)
Docker 17.03.2-ce
API 1.27

これは、いくつかのヒットと試行の後に機能したものです。どこにも文書化されていませんでした。

ファイル/etc/systemd/system/docker.service.d/execstart.conf、最後のExecStart(2つあります)を以下に置き換えます

ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock

今、私のファイルは次のようになります

# cat /etc/systemd/system/docker.service.d/execstart.conf
[Service]
Restart=always
StartLimitInterval=0
RestartSec=15
ExecStartPre=-/sbin/ip link del docker0
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#

一度、上記のファイルが変更されるのは、以下のコマンドを実行して変更を有効にするだけです。

# systemctl daemon-reload && systemctl stop docker && rm -f /var/run/docker.sock && systemctl start docker

すべてが正常に機能しているかどうかを確認するには、以下のコマンドのいずれか(またはすべて)を実行できます。

# systemctl status docker.service | grep tcp
           ├─21812 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# netstat -an | grep 4243
tcp6       0      0 :::4243                 :::*                    LISTEN
#
# ps aux | grep [4]243
root     21812  1.0  0.8 1017512 67876 ?       Ssl  15:11   0:06 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# docker -H :4243 info
0
vikas027

上記の投稿で示されている方法に従って、ドロップイン置換ファイルを使用して、それは私にとってはうまくいきました:/etc/systemd/system/docker.service.d

0
Kamesh