将centre设置为Docker_Opts

Col*_*phy 21 centos docker

我需要在运行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服务.

对我而言,这比修改服务脚本更可靠.

  • 这似乎不再是一个有效的答案 (4认同)

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地址,并将在重新启动和服务停止/启动时保持不变.


Bri*_*den 9

我无法相信有多少答案.所以这是另一个:

  • CentOS 7.3
  • Docker Version = 17.03.1-ce,API Version = 1.27

这个答案是在解决这个组合一个令人难以置信的游戏内置的答案,这一个,这一个.

  1. sudo vim /usr/lib/systemd/system/docker.service
  2. 插入"-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock" 在此输入图像描述
  3. sudo systemctl daemon-reload //刷新上面的文件更改
  4. sudo systemctl重启docker
  5. netstat -l | grep 4243 //验证端口是否打开
  6. 从某个地方连接到docker主机,比如Jenkins Docker Plugin,即tcp:// [server_ip]:4243