Essa imagem publica a API do Docker Remote por um container. Um client Docker deve autenticar com um certificado de client-TLS. Essa é uma maneira alternativa (mais fácil e igualmente eficaz), em vez de configurar o TLS no Docker diretamente.
A imagem docker-remote-api-tls
gera CA, certificados e chaves automaticamente.
Crie um arquivo docker-compose.yml, especificando uma senha e o nome do host, no qual a API remota será acessível posteriormente. O nome do host será gravado no certificado do servidor.
version: "3.4"
services:
remote-api:
image: fernandosilva/docker-remote-api-tls
ports:
- 2376:443
environment:
- CREATE_CERTS_WITH_PW=supersenha
- CERT_HOSTNAME=remote-api.example.com
volumes:
- <local cert dir>:/data/certs
- /var/run/docker.sock:/var/run/docker.sock:ro
Agora, execute o container com o docker-compose up -d
ou docker stack deploy --compose-file=docker-compose.yml remoteapidocker
.
Obs.: Para usar docker stack o docker swarm deve ser inciado, se o mesmo ainda não estiver, basta executar: docker swarm init --advertise-addr ip_da_instancia
.
Certificados serão criados em <local cert dir>
.
Você encontrará os certificados de client em <local cert dir> /client/
. Os arquivos são ca.pem, cert.pem e key.pem.
Se você não tiver uma instalação local do Docker, precisará fazer o download do client Docker, que é um executável simples. Você encontra o client Docker para Linux, MacOS e Windows em download.docker.com.
Alias para conexão HTTPS com host Docker:
alias dockerhost="docker --tlsverify -H=myserver.example.com:2376 --tlscacert=/home/user/cert/ca.pem --tlscert=/home/user/cert/cert.pem --tlskey=/home/user/cert/key.pem"
Crie um arquivo "dockerhost.bat".
Para conexão HTTPS com host Docker:
alias dockerhost="docker --tlsverify -H=myserver.example.com:2376 --tlscacert=/home/user/cert/ca.pem --tlscert=/home/user/cert/cert.pem --tlskey=/home/user/cert/key.pem"
Obs.: Esta solução se baseou em alguns scripts criados por @kekru em kekru/docker-remote-api-tls .