fundo
- Docker usando sistema de virtualização de peso leve fornecido por linux kernal que introduziu como contêiner
- Mais informações – contêineres Linux
- Uma vez que o docker usa os recursos do Linux Kernal, a máquina docker deve ser executada no Linux
- Para executar o docker no OS-X, temos que usar a máquina virtual Linux
- Estamos usando boot2docker leve linux VM aqui
- O diagrama a seguir explica resumidamente como o docker funciona no OS-X
- O servidor Docker é executado na VM boot2docker (host docker)
- O cliente Docker é executado na máquina host OS-X
- Podemos interagir com o docker através da VM boot2docker
Instale boot2docker
- Primeiro instale o VirtualBox
- Em seguida, instale o boot2docker e outros pacotes, estou usando o Homebrew para instalar todos os pacotes
brew update
## install boot2docker
brew install boot2docker
## install docker client
brew install docker
## up boot2docker
boot2docker init
boot2docker up
- Execute os seguintes comandos para visualizar as informações do docker
## docker info
docker info
## boot2docker info
boot2docker info
boot2docker status
boot2docker ip
## docker host
echo $DOCKER_HOST
Docker e postgres
Pesquisar postgres
- Você pode obter a versão mais recente da imagem postgres no docker-registry
- Se você tiver seu próprio registro docker privado, você também pode obter o postgres a partir dele
- Mais informações – usando o registro docker privado
- Para obter um exemplo, use o seguinte comando para pesquisar postgres em docker-registry
docker search "postgres"
- A seguir está o resultado da pesquisa
Instale o postgres
- Você pode instalar o postgres via
docker run
comando
docker run -p 5432:5432 \
--name postgres-db \
-d postgres:latest
Poucas coisas para notar
-p 5432:5432
define o encaminhamento de porta, significa encaminhar a porta do contêiner docker 5432 para o posto de host docker 5432--name postgres-db
define o nome do container-d
permite executar o contêiner como um demôniopostgres:latest
define o nome do contêiner e a tag em docker-registry
Se você baixar o postgres de seu próprio registro (registro privado), deverá especificar os detalhes do registro com o comando docker run
docker run -p 5432:5432 \
--name postgres-db \
-d 10.2.4.201/postgres:2.48
Poucas coisas para notar
10.2.4.201
define host de registro privadopostgres:2.48
define o nome do contêiner postgres e a tag no registro
Agora instalamos com sucesso o postgres com docker (no contêiner do docker)
Executar postgres
- Temos que iniciar o contêiner postgres recém-criado
## docker start <container-name>
docker start postgres-db
- Emita um
docker ps
comando para verificar o status dos contêineres
docker ps -a
- A saída seria como abaixo (listará os detalhes do contêiner)
Conecte-se ao postgres
- Agora você pode se conectar ao serviço postgres de
pgAdmin
(ou qualquer outro cliente postgres) - A seguir estão meus parâmetros de conexão em
pgAdmin3
Poucas coisas para notar,
- Estou tentando conectar o serviço postgres via
localhost
- Isso dará um erro
Failed connect to localhost:5432; Connection refused
- Estou tentando conectar o serviço postgres via
A razão para este erro é que estamos tentando nos conectar de nossa máquina OS-X host
localhost:5432
Mas nossas regras de encaminhamento de porta definem encaminhar a porta do contêiner docker 5432 para o posto docker host 5432 (em
boot2docker VM
)NÃO é para host OS-X porta 5432
Para simplesmente resolver esse problema, podemos nos conectar a boot2docker VM (docker host)
Use o seguinte comando para obter o IP boot2docker
boot2docker ip
## output 192.168.59.103
- Meus últimos parâmetros de conexão de trabalho estão abaixo
Mais sobre boot2docker e encaminhamento de porta
docker e docker-host
- Como mencionei anteriormente, docker encaminhar posts para docker host
- Em nosso cenário, boot2docker é o host docker (não nossa máquina OS-X)
Porta de encaminhamento para host local OS-X
- Se você deseja acessar o postgres via localhost, você deve encaminhar a porta 5432 do boot2docker para a porta OS-X 5432
- O diagrama a seguir mostra a visão geral das camadas de encaminhamento de porta
Definir regras de encaminhamento de porta
- VirtaulBox fornece um pacote
VBoxManage
que pode ser usado para definir / modificar a configuração da caixa virtual - Podemos usar
VBoxManage
para especificar as regras de encaminhamento de porta (do boot2docker para o host OS-X) - Execute os seguintes comandos do OS-X
## first need to down boot2docker
boot2docker down
## define port forwarding rules
VBoxManage modifyvm "boot2docker-vm" --natpf1 "postgres-port,tcp,127.0.0.1,5432,,5432"
## up boot2docker
boot2docker up
## start postgres
docker start postgres-db
Poucas coisas para notar,
postgres-port
– nome da modificação127.0.0.1
– localhost5432,,5432
– Posto da máquina VM (boot2docker) e porta da máquina host (máquina OS-X)
Agora você pode se conectar ao postgres via
localhost
(sem boot2docker ip – )192.168.59.103
Se você deseja excluir a regra de encaminhamento de porta definida anteriormente, use o seguinte comando
## first need to down boot2docker
boot2docker down
## delete port forwarding rule
VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "postgres-port"
## up boot2docker
boot2docker up
- Mais informações – encaminhamento de porta VBoxManage