Я пытаюсь настроить демон докеров на Centos 7.
Цель состоит в том, чтобы передать параметры перезаписывающему скрипту в systemd
и держи все в daemon.json
это намного читаемее и чище
Скрипт по умолчанию /etc/systemd/system/docker.service.d/10-machine.conf
является:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic --insecure-registry mtm-registry:5000
Environment=
/etc/systemd/system/docker.service.d/override.conf
все еще есть --label provider=generic
это последний параметр, который нужно ввести daemon.json
:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --label provider=generic
В /etc/docker/daemon.json
я уже установил эти параметры:
{
"storage-driver": "overlay2",
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/server-key.pem",
"insecure-registries": ["my-registry:5000"]
}
Я не эксперт в формате JSON, поэтому попутно застрял "labels":
.
я пытался "labels": ["provider=generic"]
это не работает, dockerd
не начать
Есть какие-нибудь предложения, чтобы передать это правильно?
РЕШЕНИЕ:
Понятия не имею, почему, но после того, как я передал значение с пробелом перед provider = generic,
(как это: [" provider=generic"]
), демон запускается правильно:
{
"storage-driver": "overlay2",
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/server-key.pem",
"insecure-registries": ["mtm-registry:5000"],
"labels": [" provider=generic"]
}
Просто должно быть:
{
"storage-driver": "overlay2",
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/server-key.pem",
"insecure-registries": ["my-registry:5000"],
"labels": ["provider=generic"]
}
Возможно, вы пропустили запятую между клавишами (см. Строчку перед)?
Обратите внимание, что пробел перед этим полем не требуется. Похоже, где-то есть опечатка или конфликт. Возможно, это специфическое изменение вилки RedHat для демона, поскольку в Debian отлично работает следующее:
# # my daemon.json file does not have a leading space
# jq .labels </etc/docker/daemon.json
[
"foo=bar",
"provider=generic"
]
# # note you only need a reload here, I'm trying to reproduce the error
# systemctl restart docker
# docker system info --format '{{json .Labels}}' | jq .
[
"foo=bar",
"provider=generic"
]