Syntax highlighting of
2cf7609 ~( devops/docker/remote)
# Docker Remote
> ВНИМАНИЕ! Статья актуальна на 2018 год.
Управление докером на удаленной машине
Источники:
https://docs.docker.com/engine/admin/#configure-the-docker-daemon
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option
https://docs.docker.com/engine/security/https/#secure-by-default
https://github.com/moby/moby/issues/25471
### Операции на удаленной машине
Создаем новую директорию, например certs, и переходим в нее
```bash
mkdir ~/certs
cd ~/certs
```
Выполняем инструкцию https://docs.docker.com/engine/security/https/
В результате должно получиться нечто похожее на это:
```bash
~/certs$ ll
total 40
drwxr-xr-x 2 misuz misuz 4096 авг 14 20:14 ./
drwxr-xr-x 10 misuz misuz 4096 авг 14 20:46 ../
-r-------- 1 misuz misuz 3326 авг 14 20:01 ca-key.pem
-r--r--r-- 1 misuz misuz 1972 авг 14 20:04 ca.pem
-rw-r--r-- 1 misuz misuz 17 авг 14 20:13 ca.srl
-r--r--r-- 1 misuz misuz 1797 авг 14 20:13 cert.pem
-rw-r--r-- 1 misuz misuz 30 авг 14 20:13 extfile.cnf
-r-------- 1 misuz misuz 3243 авг 14 20:12 key.pem
-r--r--r-- 1 misuz misuz 1818 авг 14 20:11 server-cert.pem
-r-------- 1 misuz misuz 3247 авг 14 20:09 server-key.pem
misuz@misuz:~/certs$
```
Создаем директорию */var/docker* и копируем туда некоторые файлы
```bash
sudo mkdir /var/docker
sudo cp ca.pem server-cert.pem server-key.pem /var/docker
ls /var/docker
ca.pem server-cert.pem server-key.pem
```
Останавливаем докер-демон
```bash
sudo service docker stop
```
Изменяем конфигурацию по-умолчанию докер-демона
```bash
sudo mkdir /etc/systemd/system/docker.service.d/
sudo vim /etc/systemd/system/docker.service.d/override.conf
# /etc/systemd/system/docker.service.d/hosts.conf
```
```
# /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
```
Перезапускаем systemd-демон
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker.service
```
Создаем (корректируем) файл конфигурации докер-демона
```bash
sudo vim /etc/docker/daemon.json
```
```json
{
"debug": true,
"tls": true,
"tlscacert": "/var/docker/ca.pem",
"tlscert": "/var/docker/server-cert.pem",
"tlskey": "/var/docker/server-key.pem",
"hosts": ["fd://", "tcp://0.0.0.0:2376"]
}
```
Запускаем докер-демон
```bash
sudo service docker start
sudo service docker status
# ---
sudo systemctl daemon-reload
sudo systemctl restart docker.service
systemctl cat docker | grep Exec
# --- журналы
systemctl status docker.service
journalctl -xe
```
### Операции на локальной машине
Создаем директорию *.docker* в домашней директории пользователя
Копируем файлы из директории *certs* в директорию ~/.docker
*ca.pem*
*сert.pem*
*key.pem*
Получаем доступ к удаленному докеру
```bash
DOCKER_HOST=tcp://misuz.ru:2376 DOCKER_TLS_VERIFY=1 docker ps
DOCKER_HOST=tcp://misuz.ru:2376 DOCKER_TLS_VERIFY=1 docker-compose --file docker-compose.yml pcs ps
```
### Операции на очередной удаленной машине
Если есть необходимость управлять докерами на разных удаленных машинах, то на второй и последующей машинах требуется выполнить ограниченый перечень операций
Создаем новую директорию, например certs, и переходим в нее
```bash
mkdir ~/certs
cd ~/certs
```
Копируем в эту директорию файлы *ca-key.pem* и *ca.pem*
Выполняем инструкцию https://docs.docker.com/engine/security/https/ в части создания файлов *server-key.pem* и *server-cert.pem*. Клиентские файлы создавать не надо.
Далее выполняем все операции, начиная с позиции "Создаем директорию */var/docker* и копируем туда некоторые файлы" раздела "Операции на удаленной машине".
### Обобщенный алгоритм
1) ca-key.pem
2) ca-key.pem -> ca.pem
--- серверная часть ---
3) server-key.pem
4) server-key.pem -> server.csr
5) server.csr + ca.pem + ca-key.pem -> server-cert.pem
--- клиентская часть ---
6) key.pem
7) key.pem -> client.csr
8) client.csr + ca.pem + ca-key.pem -> cert.pem
> Written with [StackEdit](https://stackedit.io/).