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/).