我需要在运行amazon linux(centos)的主机上设置docker来监听tcp://0.0.0.0/4243.我见过的所有文档告诉我运行以下命令
echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker
Run Code Online (Sandbox Code Playgroud)
这会将正确的docker_opts写入/ etc/default/docker.我已经完成了这个,但是当我重新启动docker时它不会收听127.0.0.1
我可以通过输入正确运行docker
sudo /usr/bin/docker -H tcp://0.0.0.0:4243 -d &
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我希望默认选项是在tcp://0.0.0.0:4243上侦听,而不必每次都指定它.
似乎docker完全忽略了我的/ etc/default/docker文件,因此忽略了设置.我也尝试将文件写入/etc/default/docker.io和/ etc/default/docker-io(实际上没想到会发生太多事情)
我需要能够启动docker
service docker start
Run Code Online (Sandbox Code Playgroud)
或者它会在我当前的部署手册中引起问题.
有什么想法我可以做什么来设置DOCKER_OPTS而不是每次重启docker时都不需要这样做?
Fab*_*eas 38
在RHEL7中,您还可以编辑/ etc/sysconfig/docker文件,而不是修改docker.service单元文件:
# /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
Run Code Online (Sandbox Code Playgroud)
然后重新启动docker服务.
对我而言,这比修改服务脚本更可靠.
Wil*_*nis 14
对于CentOS 7(RHEL 7):
找到systemd docker.service单元文件.我的位于:/usr/lib/systemd/system/docker.service
在此文件中,编辑以[Service]部分开头的行ExecStart=.-H tcp://0.0.0.0:4243在行中添加" ".(注意-H和IP地址之间没有"=",如上例DOCKER_OPTS行所示.)
在我的系统上,整个内容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
Run Code Online (Sandbox Code Playgroud)
(我只需要Docker来监听环回,而不是所有的IP地址.)
在对systemd单元文件进行编辑并重新启动Docker服务后systemctl restart 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地址,并将在重新启动和服务停止/启动时保持不变.
我无法相信有多少答案.所以这是另一个:
这个答案是在解决这个组合一个令人难以置信的游戏内置的答案,这一个,这一个.

| 归档时间: |
|
| 查看次数: |
43354 次 |
| 最近记录: |