在Mac OS下Docker守护进程配置路径是什么?

35

我正在使用 Mac OS(El Capitan 10.11.4)上的 Docker 版本1.12.0(构建10871),并且想为 Docker 守护程序提供配置文件。

在Ubuntu下,您可以将配置文件放置在 /etc/default/docker 目录中(请参阅文档)。不幸的是,我无法找到在 Mac OS 中放置配置文件的位置。

有什么想法吗?


好问题。Docker for Mac VM的磁盘映像是~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2。我还没有发现它之外的任何配置... - Matt
4个回答

57

Docker 19+

配置文件现在可在 ~/.docker/daemon.json 中找到(参见Ed's Answer)。

Docker EE/CE 17+

Docker for Mac/Windows 已添加配置编辑器到托盘图标 UI,允许编辑 Docker 的 daemon.json 文件,该文件将被持久化在虚拟机中。

要访问它,请转到 Docker 图标 > 首选项 > Daemon > Advanced enter image description here

原始答案

Docker for Mac VM 基于 Alpine Linuxinit system 基于 OpenRC

你可以将一个screen会话附加到虚拟机的tty(终端),并进行探索。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

docker守护进程的配置文件在通常的位置

moby:/etc/docker# ls -l /etc/docker/
total 8
-rw-r--r--    1 root     root            38 Aug  5 11:26 daemon.json
-rw-------    1 root     root           244 Aug  5 11:26 key.json

"/etc/init.d/docker"脚本负责管理启动,除了编辑脚本外似乎没有太多可配置的内容。
在虚拟机中,"/host_docker_app"是从OSX的"~/Library/Containers/com.docker.docker/Data/"挂载的数据。这似乎是持久保存自定义配置的最可能位置,但看起来没有任何接口从那里进行配置或在启动时加载配置。
似乎在"/var"或"/host_docker_app"之外的更改不会在重新启动后保留。旧的boot2docker VM镜像中有一种机制可以保存一些启动配置,但我还没有找到类似于新VM的东西。

我在重新启动时遇到了错误。有任何想法吗?我使用的是Mac OS Sierra操作系统。`service docker restart
  • 停止docker
  • 启动Docker... [ ok ] /etc/docker # /lib/rc/sh/openrc-run.sh: 第250行:无法创建/sys/fs/cgroup/openrc/aws/tasks:不存在的目录`
- Jai
@Jai,请提交更详细的问题,说明您要做什么以及您已经做了哪些更改。 - Matt
我按照上述建议打开了一个docker tty的窗口,然后执行了cd /etc/docker命令。我修改了daemon.json文件,并添加了{aws_access_key_id=<key> aws_secret_access_key=<secret>}的内容,然后使用service docker restart命令重新启动了docker,但是出现了上述错误。 - Jai
经过3次尝试,docker重启没有出错。但是当我尝试使用awslogs驱动程序将容器日志记录到AWS Cloudwatch时 - docker run --log-driver=awslogs --log-opt awslogs-region=us-east-1 --log-opt awslogs-group=Contexts --log-opt awslogs-stream=receiptCtxt -d -p mycontainer,我收到了凭据错误 - docker:Error response from daemon: Failed to initialize logging driver: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors. - Jai

39

在最新版本的Docker Desktop for Mac中,文件位于~/.docker中。

~/.docker/daemon.json

自定义(即自签名)证书可以复制到

~/.docker/certs.d/{MyRegistry:port}/client.crt

7
我正在使用的是在MacOS 10.12上运行的Docker for Mac 1.13.0,可以通过Docker应用程序访问守护程序设置(首选项->守护程序->高级)。
但是,如果您更改为错误设置,将使安装无法使用(守护程序将不再启动)。这种情况曾经发生在我身上。
我发现这些设置存储在Git仓库中,位于~/Library/Containers/com.docker.docker/Data/database,我必须在更改任何设置之前执行git reset --hard HEAD
之后,守护程序设置可在~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json中找到。
编辑,提交并重新启动Docker应用程序...... voilà......守护程序再次启动。

数据库目录在2.1.0.5版本中不存在。 - tharibo
最近的Docker版本(我相信是19+)的配置文件可以在这里找到:~/.docker/daemon.json - Peter

2

我的 Docker 版本如下:

Client:
 Version:   17.12.0-ce
 API version:   1.35
 Go version:    go1.9.2
 Git commit:    c97c6d6
 Built: Wed Dec 27 20:03:51 2017
 OS/Arch:   darwin/amd64

Server:
 Engine:
  Version:  17.12.0-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.2
  Git commit:   c97c6d6
  Built:    Wed Dec 27 20:12:29 2017
  OS/Arch:  linux/amd64
  Experimental: true

在我的OSX 10.13.2系统中,守护进程配置文件的路径是/var/config/docker/daemon.json。您可以使用以下命令将屏幕会话连接到VM的tty:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

在虚拟机中,您可以使用grep命令查找dockerd进程以获取配置文件路径:
ps aux | grep dockerd

/usr/local/bin/dockerd --config-file /var/config/docker/daemon.json --swarm-default-advertise-addr=eth0 --userland-proxy-path /usr/bin/vpnkit-expose-port --storage-driver overlay2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接