AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 664979
Accepted
dlyk1988
dlyk1988
Asked: 2015-02-05 07:51:07 +0800 CST2015-02-05 07:51:07 +0800 CST 2015-02-05 07:51:07 +0800 CST

Docker (systemd) 忽略默认目录 (docker.service) 的更改

  • 772

我想在服务器上部署 docker,但我希望所有与 docker 相关的数据都位于与基本系统不同的分区中。因此,根据官方文档,我已将所述分区安装在“/srv”并进行了以下更改:

这是我的“/usr/lib/systemd/system/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=-/srv/docker/docker.conf
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576

[Install]
Also=docker.socket
WantedBy=multi-user.target

这是“docker.service”文件中引用的“/srv/docker/docker.conf”文件:

$OPTIONS="--graph /srv/docker --storage btrfs"

docker 守护进程正确启动并且还拉取图像。问题是它仍然没有在“/srv/docker”目录中存储任何内容。

另外,当我运行 'ps -aux | grep docker',我得到的是:

root       661  0.4  0.2 351080 17044 ?        Ssl  19:33   0:00 /usr/bin/docker -d -H fd://

命令行在“fd://”处停止。在我看来,'$OPTIONS' 出于某种原因被忽视了。

现在,我引用文件的方式有问题吗?这里还有其他事情吗?我进行所有这些配置更改的原因是我真的很想将所有与 docker 相关的数据保存在“/srv/docker/”目录下。

有任何想法吗?

更新 1:

按照答案部分的建议,我更改了我的 'docker.conf' 文件。现在:

$OPTIONS="--graph /srv/docker --storage btrfs"

变成:

OPTIONS="--graph /srv/docker --storage btrfs"

这导致了 docker 守护进程未启动的(意外)后果。这是来自“systemctl status docker”的调试消息:

[root@V12 ~]# systemctl status docker ● docker.service - Docker 应用程序容器引擎已加载:已加载(/usr/lib/systemd/system/docker.service;已启用;供应商预设:已禁用) 活动:失败(结果:退出-code) 自 2015 年 2 月 5 日星期四 20:13:31 EET 起;14 秒前 文档:http ://docs.docker.com 进程:776 ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS (code=exited, status=2) Main PID: 776 (code=退出,状态=2)

configuration
  • 3 3 个回答
  • 2001 Views

3 个回答

  • Voted
  1. Michael Hampton
    2015-02-06T07:53:34+08:002015-02-06T07:53:34+08:00

    您的/srv/docker/docker.conf文件中有错误。

    $OPTIONS="--graph /srv/docker --storage btrfs"
    

    变量的说明不应以 $ 开头;$ 应该只在以后使用变量时使用。

    将其更改为:

    OPTIONS="--graph /srv/docker --storage btrfs"
    
    • 1
  2. Best Answer
    dlyk1988
    2015-02-07T00:13:23+08:002015-02-07T00:13:23+08:00

    首先,我要感谢@MichaelHampton 的回答。它是正确的,我永远不会发现带有'$'('OPTIONS=...'而不是'$OPTIONS=...')的错字。

    现在,问题出在命令行选项上。在 docker 文档中,更改存储驱动程序的参数如下:

    --storage btrfs
    

    请记住,这是 1.4 版的文档,这是我拥有的版本。唉,'docker --help' 证明的正确语法是:

    --storage-driver btrfs
    

    因此,在进行必要的更改后,守护程序正确启动,图像在“/srv/docker”目录中被拉取,一切都很好。

    道德是总是对官方文档有点不信任,特别是对于像 Docker 这样正在大力开发的项目。再次感谢大家的贡献。

    • 1
  3. Cristian Măgherușan-Stanciu
    2015-06-28T10:26:01+08:002015-06-28T10:26:01+08:00

    最初,我花了相当多的时间来摆弄以前的 upstart/sysv initscript from/etc/init.d/docker及其配置文件/etc/default/docker。真的很奇怪,无论我尝试什么它都不起作用,然后最终我意识到这systemd只是忽略了这两个,因为我直接使用遗留脚本。

    建议的解决方案似乎无法在我的 15.04 上 100% 工作,并lxc-docker-1.7.0从官方 docker PPA 安装,因为我的配置文件中EnvironmentFile似乎缺少该解决方案。dockersystemd

    一个选项是就地编辑它并使用以下命令添加它:

    sudo systemctl edit docker --full
    

    但这有可能被下一次更新覆盖,所以我的解决方案是通过运行来创建一个覆盖

    sudo systemctl edit docker
    

    然后我决定只ExecStart在新的配置覆盖中重新定义命令,而不是在/srv/docker/docker.conf.

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker -d -H fd:// --storage btrfs
    

    上面的代码片段没有错误,由于某些奇怪的原因,与systemd读取其配置覆盖的方式有关,需要首先用空值定义一个值,然后重新分配给新值。

    一旦我这样做了,守护进程就会愉快地启动,我终于可以使用它了。

    • 0

相关问题

  • 小型企业的服务器虚拟化/RAID 配置

  • httpd.conf 用于不区分大小写的文件服务

  • Windows Server 2003 DNS 添加的 CNAME 不起作用

  • 我应该使用什么策略在 linux 上安装 smtp 服务器?用于多线程服务

  • 为什么我的站点在配置为直通身份验证时使用 IUSR 帐户?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve