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を再起動するたびに設定する必要がないことについての考えはありますか?
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サービスを再起動します。
私にとって、これはサービススクリプトを変更するよりも信頼性があります。
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アドレスでリッスンし、再起動およびサービスの停止/開始後も持続します。
編集 /etc/docker/daemon.json
は、サポートされている新しい方法のようです。
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
デフォルトのブリッジインターフェース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
CentOSでは、ファイル/ etc/sysconfig/dockerで以下のオプションを設定してみてください。
other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
次に、ドッカーを再起動して、ポートが開いているかどうかを確認してみてください
netstat -plt | grep 4243
これはリスニングする場合にリストする必要があります
私はcentos 7に取り組んでいます。
Docker構成ファイルにinsecure-registryを追加したいだけで、/ etc/sysconfig/dockerの「DOCKER_OPTS =-insecure-registry = ....」を変更しましたが、機能しませんでした。
構成にINSECURE_REGISTRYがあるので、この変数を変更しました。
したがって、ここではDOCKER_OPTSは機能しません。
しかし、それは私のunbuntu 14で機能しました!
Dockerを使用するとき、本当にイライラします!
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
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
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
上記の投稿で示されている方法に従って、ドロップイン置換ファイルを使用して、それは私にとってはうまくいきました:/etc/systemd/system/docker.service.d