在centos中设置Docker_选项
我需要让docker听我说tcp://0.0.0.0/4243 在我运行amazon linux(centos)的主机上。我看到的所有文档都告诉我运行以下命令在centos中设置Docker_选项,centos,docker,Centos,Docker,我需要让docker听我说tcp://0.0.0.0/4243 在我运行amazon linux(centos)的主机上。我看到的所有文档都告诉我运行以下命令 echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker 将正确的docker\u选项写入/etc/default/docker。我已经这样做了,但当我重新启动docker时,它不会听127.0.0.1 我可以通过键入使docker正确运行 sudo
echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker
将正确的docker\u选项写入/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_选项,而不是每次重新启动DOCKER时都必须这样做,您有什么想法吗?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
(我只需要Docker监听环回,而不是所有IP地址。)
对systemd unit文件进行此编辑并通过systemctl restart Docker
重新启动Docker服务后,我看到以下过程:
root 8574 0.0 0.2 321708 10564?Ssl 00:42 0:00/usr/bin/docker-d-Htcp://127.0.0.1:4243 -H fd://--selinux已启用
如您所见,它现在确实侦听配置的TCP地址,并将在重新启动和服务停止/启动期间保持不变。在RHEL7中,您也可以编辑/etc/sysconfig/docker文件,而不是修改docker.service unit文件:
# /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上,您可以尝试在文件/etc/sysconfig/docker中设置以下选项
other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
然后重新启动docker并尝试检查端口是否正在使用打开
netstat -plt | grep 4243
如果在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
当我在上面的帖子中用替换文件显示它时,它对我起了作用:
/etc/systemd/system/docker.service.d
我正在使用centos 7
我只想在docker配置文件中添加不安全的注册表,然后在/etc/sysconfig/docker中更改了“docker_OPTS=--unsecure registry=..”,但它不起作用
当我在配置中看到一个不安全的_注册表时,我改变了这个变量,它工作了
所以我猜DOCKER_OPTS在这里不起作用
但它对我的unbuntu 14起了作用
使用docker时真的很令人沮丧 基于
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后台程序重新加载
sudo systemctl restart docker
我需要将默认桥接接口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 7.3
- Docker版本=17.03.1-ce,API版本=1.27
1、 编辑/usr/lib/systemd/system/docker.service,在服务部分添加两个参数:
# vim /usr/lib/systemd/system/docker.service
[服务]
执行开始=
ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375 -Hunix://var/run/docker.sock
2、 重新加载配置,然后重新启动docker
# systemctl daemon-reload
# systemctl restart docker
3、 要检查是否成功,请查看是否返回以下响应
# ps -ef|grep docker
根262081023:51?00:00:00/usr/bin/dockerd-Htcp://0.0.0.0:2375 -Hunix://var/run/docker.sock
来自编辑的引用似乎是一种新的、受支持的方式。我相信现在情况已经改变了,Brian Ogden的回答在早些时候对我有用,但在今天的环境中不起作用,可能是docker、内核和操作系统的更新版本
CentOS 7.4.1708 (on AWS)
Docker 17.03.2-ce
API 1.27
这是经过几次试射后奏效的方法。我在任何地方都找不到它
在文件/etc/systemd/system/docker.service.d/execstart.conf
中,将最后一个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
现在,我的文件看起来像这样
# 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
你是如何检查docker守护进程没有监听4243的?我正在使用jenkins连接到我的docker