Debian 下docker 开启远程api失败

系统版本:

Debian 8.3

问题: Debian下增加dcoker的远程api,始终不能打开网络端口。

过程:

修改/etc/default/docker 增加一行

DOCKER_OPTS="-H 0.0.0.0:2376 -H unix:///var/run/docker.sock"

重启docker:

service docker restart

查看端口是否打开:

lsof -i:2376  没有任何返回。

查看日志:

Mar 28 12:44:32 docker1 docker[3491]: time="2016-03-28T12:44:32.665294330-04:00" level=info msg="[graphdriver] using prior storage driver \"aufs\""

Mar 28 12:44:32 docker1 docker[3491]: time="2016-03-28T12:44:32.667332848-04:00" level=info msg="Graph migration to content-addressability took 0.00 seconds"

Mar 28 12:44:32 docker1 docker[3491]: time="2016-03-28T12:44:32.673179732-04:00" level=info msg="Firewalld running: false"

Mar 28 12:44:34 docker1 docker[3491]: time="2016-03-28T12:44:34.908750963-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.035544113-04:00" level=warning msg="Your kernel does not support cgroup memory limit: mountpoint for memory not found"

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.035820306-04:00" level=warning msg="Your kernel does not support cgroup cfs period"

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.035864016-04:00" level=warning msg="Your kernel does not support cgroup cfs quotas"

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.037271326-04:00" level=info msg="Loading containers: start."

Mar 28 12:44:36 docker1 docker[3491]: .

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.039178384-04:00" level=info msg="Loading containers: done."

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.039227903-04:00" level=info msg="Daemon has completed initialization"

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.039262276-04:00" level=info msg="Docker daemon" commit=20f81dd execdriver=native-0.2 graphdriver=aufs version=1.10.3

Mar 28 12:44:36 docker1 docker[3491]: time="2016-03-28T12:44:36.059353006-04:00" level=info msg="API listen on /var/run/docker.sock"

可见没有报任何错误,只是打开了/var/run/docker.sock,没有打开2376端口。

接着排查问题

[email protected]:/var/log# /etc/init.d/docker stop

[ ok ] Stopping docker (via systemctl): docker.service.

[email protected]:/var/log# ps -ef |grep docker

avahi      484     1  0 07:23 ?        00:00:00 avahi-daemon: running

root      3723  2314  0 12:53 pts/1    00:00:00 grep docker

[email protected]:/var/log# bash -x /etc/init.d/docker start

+ set -e

+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

+ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

+ BASE=docker

。。。。。。省略一部分

+ . /lib/lsb/init-functions

+++ run-parts --lsbsysinit --list /lib/lsb/init-functions.d

++ for hook in ‘$(run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2>/dev/null)‘

++ ‘[‘ -r /lib/lsb/init-functions.d/20-left-info-blocks ‘]‘

++ . /lib/lsb/init-functions.d/20-left-info-blocks

++ for hook in ‘$(run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2>/dev/null)‘

++ ‘[‘ -r /lib/lsb/init-functions.d/40-systemd ‘]‘

++ . /lib/lsb/init-functions.d/40-systemd

+++ _use_systemctl=0

。。。。。。省略一部分

+++ ‘[‘ xstart = xstart -o xstart = xstop -o xstart = xrestart -o xstart = xreload -o xstart = xforce-reload -o xstart = xstatus ‘]‘

+++ systemctl_redirect /etc/init.d/docker start

+++ log_daemon_msg ‘Starting docker (via systemctl)‘ docker.service

+++ ‘[‘ -z ‘Starting docker (via systemctl)‘ ‘]‘

+++ log_daemon_msg_pre ‘Starting docker (via systemctl)‘ docker.service

。。。。。。省略一部分

[....] +++ ‘[‘ -z docker.service ‘]‘

+++ echo -n ‘Starting docker (via systemctl): docker.service‘

Starting docker (via systemctl): docker.service+++ log_daemon_msg_post ‘Starting docker (via systemctl)‘ docker.service

。。。。。。省略

看到这儿的时候明白了吧,还没没有执行到下面的start模块呢,服务就被systemctl服务接管了,设置的参数就不会生效了。

看一下docker:

[email protected]:/var/log# ps -ef |grep docker

avahi      484     1  0 07:23 ?        00:00:00 avahi-daemon: running

root      3741     1  0 12:56 ?        00:00:00 /usr/bin/docker daemon -H fd://

root      3816  2314  0 13:03 pts/1    00:00:00 grep docker

确实没有加载DOCKER_OPTS参数:

简单的做一下设置,把40-systemd这个脚本移动一下

[email protected]:/var/log# /etc/init.d/docker stop

[email protected]:/var/log# mv /lib/lsb/init-functions.d/40-systemd /lib/lsb/

启动docker

Starting Docker: [email protected]:/var/log# /etc/init.d/docker start

查看一下

[email protected]:/var/log# ps -ef |grep docker

avahi      484     1  0 07:23 ?        00:00:00 avahi-daemon: running [docker1.local]

root      3970     1  0 13:06 ?        00:00:00 /usr/bin/docker daemon -p /var/run/docker.pid -H docker1.y7tech.cn:2376 -H unix:///var/run/docker.sock

root      4080  2314  0 13:07 pts/1    00:00:00 grep docker

[email protected]:/var/log# lsof -i:2376

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

docker  3970 root    6u  IPv4  20313      0t0  TCP docker1.y7tech.cn:2376 (LISTEN)

哈哈,看到了吧,端口开启了......接下来远程调用一下

[email protected]:/etc# docker -H  docker1.y7tech.cn:2376  images

REPOSITORY                    TAG                 IMAGE ID            CREATED                  SIZE

192.168.12.138:5000/mongodb   v1.0                a9e3f0081258        Less than a second ago   408.8 MB

debian                        latest              f50f9524513f        3 weeks ago              125.1 MB

再看看本地是否正常

[email protected]:~$ docker ps

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Oh,Mygod,本地出现问题了。

我们能够看到/var/run/docker.socket 确实存在了。

[email protected]:~$ docker -H unix:///var/run/docker.sock images

REPOSITORY             TAG    IMAGE ID     CREATED         SIZE

192.168.12.138:5000/mongodb  v1.0  a9e3f0081258  7 hours ago      408.8 MB

debian               latest  f50f9524513f  3 weeks ago      125.1 MB

这样执行命令太笨了......查看一下docker的帮助,看看有没有什么好的方法没有。

http://www.simapple.com/274.html

daemon字段

编辑本地配置文件:

/etc/profile ,添加变量

export DOCKER_HOST=tcp://docker1.y7tech.cn:2376

或者:

export DOCKER_HOST=unix:///var/run/docker.sock

[email protected]:~$ docker ps -a

CONTAINER ID      IMAGE    COMMAND     CREATED   STATUS    PORTS     NAMES

OK!正常了。

时间: 2024-08-09 10:38:57

Debian 下docker 开启远程api失败的相关文章

Docker开启Remote API 访问 2375端口

Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为https 443端口的修改2377:群集模式套接字,适用于群集管理器,不适用于docker客户端5000:docker注册服务4789和7946:覆盖网络 开启配置 方法一 首先是怎么配置远程访问的API: sudo vim /etc/default/docker 加入下面一行 DOCKER_OPT

docker 开启remote api

docker官方文档上有相关说明(Configure and run Docker on various distributions),ubuntu上是可行的 sudo vi /etc/default/docker DOCKER_OPTS="-H tcp://0.0.0.0:2375" 参考一 Ubuntu14.04使用参考一推荐的方法开启remote api没有成功 参考二 使用参考二的方法开启remote api成功了

Docker 开启 remoter api

debian 环境: vi /lib/systemd/system/dcoker.service 修改: ExecStart=/usr/bin/dockerd -H fd://为 ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 systemctl daemon-reloadsystemctl restart docker.service 原文地址:https://www.cnblogs.com/xIron/p/10637246.

Windows批处理:自动开启远程桌面,并获取登录所需信息

公司办公场地分别在两个不同的楼层,处理问题要来回跑,所以思考使用远程访问的方式解决问题.同事大多对电脑不熟悉,使用「通讯软件」和「电话」教同事开启远程桌面沟通成本挺高,另外公司IP地址.账号密码都没统一管理,使用远程桌面的前提:①开启远程 ②获取IP地址 ③获取用户名密码.经过一番思考,发现使用批处理解决这些问题并不复杂. 当同事遇到问题时:我通过「通讯软件」将脚本发送给同事 > 同事执行 > 我使用远程桌面操作. 脚本先开启远程桌面服务,接下来获取当前用户名.让用户输入密码.获取IP,这些信

开启远程Windows系统3389端口

1.Win7.Win2003.XP系统REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 2.2000系统 简要说一下如何进行DNS溢出攻击.我用的溢出利用程序是dns.exe,在CMD下运行它可以看到它的使用参数等信息.执行"dns -s IP"命令检测目标IP是否存在DNS溢出漏洞,若存在

阿里云下docker启动mysql容器,开启外部访问

阿里云下docker启动mysql容器,开启外部访问 (1)拉取mysql镜像 ```docker pull centos/mysql-57-centos7``` (2)创建容器 ```docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7``` -p 代表端口映射,格式为  宿主机映射端口:容器运行端口 -e 代表添加环境变量  MYSQL

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是指备份执行时当天的日期),最后只保留最近7天的备份 2.上传/home/osyunweibak里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份. 3.FTP服务器:192.168.21.139 端口:21 账号:osyunwei 密码:123456 osyunweibak为备份文件存放目

CentOS6.5下通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户

CentOS6.5下通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户: 最近在写一个自动化部署的Shell脚本,需要通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户, 经过一番查找和实验,得到以下几个命令,给大家分享一下: 修改初始密码:mysqladmin -uroot -pvyCE2UwSaqx3xofR password "123456" 开启远程登录,授权远程登录用户:mysql -uroot -proot -e "grant

通过Enable-PSRemoting 开启Powershell远程管理失败的解决方法

1 Powershell 远程管理是Windows一项很常用的管理方式,但是我们在网上搜到的一些开启方法都是通过Enable-PSRemoting,或者winrm quickconfig,但是有时候执行完毕后发现还是无法实现远程.提示消息是"连接到远程服务器失败,错误消息如下:客户端无法连接到请求中指定的目标" 2 解决方法: 我们需要首先确定Winrm是否开启了侦听: 查看一下Winrm侦听的端口和IP winrm enumerate winrm/config/Listener 发现