Установите Docker_Opts в centos
Мне нужно установить docker для прослушивания tcp://0.0.0.0/4243 на моей главной машине, работающей с amazon linux (centos). Вся документация, которую я видел, сказал мне запустить следующую команду
echo DOCKER_OPTS="-H=tcp://127.0.0.1:4243" >> /etc/default/docker
Что будет писать правильные docker_opts в /etc/default/docker. Я сделал это, но когда я перезапускаю докер, он не прослушивает 127.0.0.1
Я могу заставить докер работать правильно, набрав
sudo /usr/bin/docker -H tcp://0.0.0.0:4243 -d &
Это работает, но я хочу, чтобы опция по умолчанию прослушивалась на tcp://0.0.0.0: 4243 без необходимости указывать ее каждый раз.
Кажется, что докер полностью игнорирует мой файл /etc/default/docker, поэтому настройки игнорируются. Я также попытался записать файл в /etc/default/docker.io и/etc/default/docker-io (на самом деле не ожидал, что многое произойдет)
Мне нужно запустить docker с помощью
service docker start
или это вызовет проблемы в текущем учебнике по развертыванию.
Любые мысли о том, что я могу сделать, чтобы установить DOCKER_OPTS и не нужно делать это каждый раз, когда я перезапускаю докер?
Ответы
Ответ 1
В RHEL7 вместо изменения файла unit docker.service вы также можете просто отредактировать файл /etc/sysconfig/docker:
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS=--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:4243
а затем перезапустите службу докеров.
Для меня это более надежно, чем изменение службы script.
Ответ 2
Для CentOS 7 (RHEL 7):
Найти файл systemd docker.service. Шахта находится по адресу: /usr/lib/systemd/system/docker.service
В этом файле отредактируйте строку в разделе [Сервис], начиная с ExecStart=
. Добавьте "-H tcp://0.0.0.0:4243
" в строку. (обратите внимание на отсутствие "=" между -H и IP-адресом, как в вашей строке DOCKER_OPTS выше.)
В моей системе все содержимое 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=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
[Install]
Also=docker.socket
(Мне нужно, чтобы Docker прослушивал loopback, а не все IP-адреса.)
После внесения этого изменения в файл unit system и перезапуска службы Docker с помощью systemctl restart docker
, я вижу следующий процесс:
root 8574 0.0 0.2 321708 10564 ? Ssl 00:42 0:00 /usr/bin/docker -d -H tcp://127.0.0.1:4243 -H fd:// --selinux-enabled
Как вы можете видеть, теперь он прослушивает настроенный TCP-адрес и будет продолжать перезагрузку и останавливать/запускать службу.
Ответ 3
Я не могу поверить, сколько ответов есть для этого. Итак, вот еще один для:
- CentOS 7.3
- Версия Docker = 17.03.1-ce, версия API = 1.27
Этот ответ построен на невероятной игры вокруг комбинации этого ответа, и этот один, и этот один.
- sudo vim/usr/lib/systemd/system/docker.service
- insert "-H tcp://0.0.0.0: 4243 -H unix:///var/run/docker.sock"
![enter image description here]()
- sudo systemctl daemon-reload//обновить ваши изменения файлов выше
- sudo systemctl перезапустить докер
- netstat -l | grep 4243//проверить, что порт открыт
- подключитесь к своему серверу докеров, где-то, например, Jenkins Docker Plugin, т.е. tcp://[server_ip]: 4243
Ответ 4
Редактирование /etc/docker/daemon.json
кажется новым, поддерживаемым способом.
Ответ 5
С Docker 1.7.1 на CentOS 7 ни для меня не работали никакие модификации /usr/lib/systemd/system/docker.service
или /etc/sysconfig/docker
. Кажется, что в systemd устанавливает сокет, поэтому, чтобы изменить группу, вы должны отредактировать SocketGroup в /usr/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=jenkins
[Install]
WantedBy=sockets.target
Ответ 6
Я думаю о CentOS, вы можете попробовать установить параметры, как показано ниже, в файле /etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
Затем перезапустите докер и попробуйте проверить, открывается ли порт с помощью
netstat -plt | grep 4243
Это должно отображаться при прослушивании
Ответ 7
Мне нужно было изменить модемный интерфейс docker0 по умолчанию, чтобы использовать мой собственный интерфейс моста br0 и поместив следующий контент в этот файл, решил мою проблему:
CentOS 7.2 и докер 1.10.3
/usr/lib/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --bridge=br0 -H fd://
и, конечно же, необходимо выполнить следующее:
sudo systemctl daemon-reload
sudo systemctl restart docker
ip link del docker0
Ответ 8
Это сработало для меня, когда я следил за тем, как его показано в сообщениях выше с файлами замены с заменой: /etc/systemd/system/docker.service.d
Ответ 9
Я работаю над centos 7.
Я просто хочу добавить insecure-registry в файл конфигурации docker, затем я изменил "DOCKER_OPTS = - insecure-registry =...." в /etc/sysconfig/docker, пока он не работал.
Пока я видел INSECURE_REGISTRY в конфиге, поэтому я изменил эту переменную и это WORKS!
Итак, я думаю, DOCKER_OPTS здесь не работает!
Но это сработало на моем unbuntu 14!
Это действительно неприятно при использовании докеров!
Ответ 10
На основе https://docs.docker.com/engine/admin/configuring/
sudo mkdir /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -D -H tcp://127.0.0.1:4243
sudo systemctl daemon-reload
sudo systemctl restart docker
Ответ 11
1, отредактируйте /usr/lib/systemd/system/docker.service, чтобы добавить два параметра в раздел службы:
# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart =
ExecStart =/usr/bin/dockerd -H tcp://0.0.0.0: 2375 -H unix://var/run/docker.sock
2, перезагрузите конфигурацию и перезапустите докер.
# systemctl daemon-reload
# systemctl restart docker
3, чтобы проверить успех, посмотрите, возвращает ли ответ следующий.
# ps -ef|grep docker
root 26208 1 0 23:51? 00:00:00/usr/bin/dockerd -H tcp://0.0.0.0: 2375 -H unix://var/run/docker.sock
ссылка из Открыть Docker Remote API на Centos 7?
Ответ 12
Я считаю, что теперь все изменилось, этот ответ Брайан Огден работал для меня раньше, но сегодня не работал над моей средой, возможно, с обновленными версиями докера, ядра и ОС.
CentOS 7.4.1708 (on AWS)
Docker 17.03.2-ce
API 1.27
Это то, что работало после нескольких ударов и испытаний. Я не мог найти его документально нигде.
В файле /etc/systemd/system/docker.service.d/execstart.conf
замените последний ExecStart
(их два) ниже
ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
Теперь мои файлы выглядят так:
# cat /etc/systemd/system/docker.service.d/execstart.conf
[Service]
Restart=always
StartLimitInterval=0
RestartSec=15
ExecStartPre=-/sbin/ip link del docker0
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
Однажды, вышеупомянутый файл будет изменен, просто выполните команду ниже, чтобы активировать изменения.
# systemctl daemon-reload && systemctl stop docker && rm -f /var/run/docker.sock && systemctl start docker
Чтобы проверить, все ли работает нормально, вы можете запускать любые (или все) команды ниже
# systemctl status docker.service | grep tcp
├─21812 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# netstat -an | grep 4243
tcp6 0 0 :::4243 :::* LISTEN
#
# ps aux | grep [4]243
root 21812 1.0 0.8 1017512 67876 ? Ssl 15:11 0:06 /usr/bin/dockerd --graph=/var/lib/docker --storage-driver=overlay -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
#
# docker -H :4243 info