文档章节

Docker配置文件在Ubuntu中不起作用的解决办法

 风摆残荷
发布于 2016/09/04 21:26
字数 742
阅读 197
收藏 1

环境

1. OS 版本: Ubuntu 16.04 LTS

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04 LTS
Release:	16.04
Codename:	xenial

2. Docker版本: Docker version 1.11.2, build b9f10c9

$ docker -v
Docker version 1.11.2, build b9f10c9

 

问题描述

最近想使用Docker的Remote API,即使用REST API的形式访问、操作Docker,按照网上的几篇文章配置,发现无法启用Docker的Remote API,于是便有此文。

 

解决办法

1. 设置Docker开机启动(可选)

sudo systemctl enable docker

2. 配置Docker配置文件,Docker配置文件位于 /etc/default/docker ,配置文件如下:

# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:7654"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"

注意配置文件中的 

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

红色部分即为配置启用Docker Remote API,访问端口为7654

3. 确定 docker.service 文件位置

$ systemctl show --property=FragmentPath docker
FragmentPath=/lib/systemd/system/docker.service

 如上,我机器上的docker.service文件位于 /lib/systemd/system/docker.service

4. 修改 docker.service 文件配置

首先查看 docker.service 

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/docker daemon -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

我们需要在 [Service] 部分中加入 EnvironmentFile 配置以及给 ExecStart 配置添加 $DOCKER_OPTS 参数,配置后的配置文件如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
EnvironmentFile=-/etc/default/docker
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

5. 重新加载配置文件

systemctl daemon-reload

6. 查看配置参数是否起作用

$ systemctl show docker | grep EnvironmentFile
EnvironmentFile=/etc/default/docker (ignore_errors=yes)

7. 测试 Docker Remote API

curl localhost:7654/info | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1381  100  1381    0     0   196k      0 --:--:-- --:--:-- --:--:--  224k
{
  "ID": "AMPA:7NQC:J6QJ:SMNQ:CFOR:QA5V:NJY5:SJLP:NLFB:EJA7:KHIO:43TO",
  "Containers": 0,
  "ContainersRunning": 0,
  "ContainersPaused": 0,
  "ContainersStopped": 0,
  "Images": 7,
  "Driver": "aufs",
  "DriverStatus": [
    [
      "Root Dir",
      "/var/lib/docker/aufs"
    ],
    [
      "Backing Filesystem",
      "extfs"
    ],
    [
      "Dirs",
      "80"
    ],
    [
      "Dirperm1 Supported",
      "true"
    ]
  ],
  "SystemStatus": null,
  "Plugins": {
    "Volume": [
      "local"
    ],
    "Network": [
      "bridge",
      "null",
      "host"
    ],
    "Authorization": null
  },
  "MemoryLimit": true,
  "SwapLimit": false,
  "KernelMemory": true,
  "CpuCfsPeriod": true,
  "CpuCfsQuota": true,
  "CPUShares": true,
  "CPUSet": true,
  "IPv4Forwarding": true,
  "BridgeNfIptables": true,
  "BridgeNfIp6tables": true,
  "Debug": false,
  "NFd": 14,
  "OomKillDisable": true,
  "NGoroutines": 33,
  "SystemTime": "2016-09-04T21:24:40.951697312+08:00",
  "ExecutionDriver": "",
  "LoggingDriver": "json-file",
  "CgroupDriver": "cgroupfs",
  "NEventsListener": 0,
  "KernelVersion": "4.4.0-28-generic",
  "OperatingSystem": "Ubuntu 16.04 LTS",
  "OSType": "linux",
  "Architecture": "x86_64",
  "IndexServerAddress": "https://index.docker.io/v1/",
  "RegistryConfig": {
    "InsecureRegistryCIDRs": [
      "127.0.0.0/8"
    ],
    "IndexConfigs": {
      "docker.io": {
        "Name": "docker.io",
        "Mirrors": null,
        "Secure": true,
        "Official": true
      }
    },
    "Mirrors": null
  },
  "NCPU": 4,
  "MemTotal": 4125618176,
  "DockerRootDir": "/var/lib/docker",
  "HttpProxy": "",
  "HttpsProxy": "",
  "NoProxy": "",
  "Name": "poet-pc",
  "Labels": null,
  "ExperimentalBuild": false,
  "ServerVersion": "1.11.2",
  "ClusterStore": "",
  "ClusterAdvertise": ""
}

-----------------------------------------------------------------------------------

官方文档链接: https://docs.docker.com/engine/admin/systemd/

© 著作权归作者所有

粉丝 2
博文 13
码字总数 25615
作品 0
昌平
程序员
私信 提问
Ubuntu15.10上的Docker Registry问题解决

Docker在Ubuntu15.10上搭建registry时出现问题,总是报TLS错。 1、Ubuntu14.04及之前版本的解决方法 然后,网上搜索的解决办法都是: 修改/etc/default/docker文件,加入: DOCKEROPTS='--in...

openthings
2016/04/14
235
0
解决ubuntu中使用vi命令时方向键与退格键出错的问题

问题: 在VirtualBox中安装虚拟机Ubuntu14.04,使用VI修改配置文件时,方向键不起作用 环境: 查找问题: 由于Ubuntu预装的是vim tiny版本,需要删除后安装完整版。 [FROM: hongzhguan] 解决u...

王永濤
2016/04/27
210
0
Docker 性质及版本选择 [二]

Docker 性质及版本选择 [二] Docker 性质及版本选择 [二] 本文由李磊提供--->QQ:550376681 Docker的性质   Docker的组成其实很简单。你需要搭建,专属于你自己的,然后就是的镜像和docker的...

Abcdocker
2018/06/26
0
0
Ubuntu server 16.04 和 17.10 静态IP设置及安装中的坑

最近研究区块链技术,很多运行环境都是在Ubuntu平台上,以前不怎么用,结果用的时候踩了很多坑,现在写出来,免得有人再重蹈覆辙。 1、中文安装不能成功的大坑 安装服务器版时,无论是16.04...

newthink
2018/06/26
0
0
Docker私有镜像仓库的访问问题

问题 从docker1.3.2版本开始默认docker registry使用的是https,当你用docker pull 非https的docker regsitry的时候会报下面错误: MacOS解决办法 如果使用的是MacOS版的Docker GUI工具,可以...

openthings
2016/10/12
202
0

没有更多内容

加载失败,请刷新页面

加载更多

c语言实现Sqlite3的创建db和增删改查db操作

SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能...

jorin_zou
3分钟前
2
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第2题

choose three Which three are true about the CREATE TABLE command? A) It can include the CREATE...INDEX statement for creating an index to enforce the primary key constraint. B) ......

oschina_5359
6分钟前
2
0
如何在二维码中循环批量插入图片

现在二维码种类比较多,为了突出二维码的个性及吸引客户,很多朋友都喜欢在二维码上插入图片。想要每个二维码都与众不同,但是有的时候需要批量插入图片数量有限,如果制作的二维码比较多的话...

中琅软件
7分钟前
2
0
LTR那点事—AUC及其与线上点击率的关联详解

LTR(Learning To Rank)学习排序是一种监督学习(SupervisedLearning)的排序方法,现已经广泛应用于信息索引,内容推荐,自然语言处理等多个领域。以推荐系统为例,推荐一般使用多个子策略...

达观数据
8分钟前
2
0
IntelliJ 如何显示代码的代码 docs

希望能够在 IntelliJ 代码上面显示方法的 docs。 如何进行显示? 你可以使用 Ctrl + Q 这个快捷键来查看方法的 Docs。 https://blog.ossez.com/archives/3061...

honeymoose
11分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部