Acho que você tem a relação de docker
e docker-compose
errado:
docker-compose
é um wrapper em torno de docker
. Para fazer seu trabalho docker-compose
precisa de sua configuração: docker-compose.yaml
Girando ainda mais o seu exemplo:
crie docker-compose.yaml :
version: '2'
services:
web:
container_name: myapp
build: .
command: node app.js
ports:
- "9000:3000"
use docker-compose
para iniciar o contêiner e executar um comando no contêiner em execução:
docker-compose up
docker-compose exec web /bin/bash
docker-compose
usa o nome do serviço - no seu caso, isso é web
- enquanto docker
usa o nome do contêiner - nesse caso, myapp
.
Portanto, para executar /bin/bash
a docker
, você usaria o seguinte:
docker exec -ti myapp /bin/bash
você poderia remover o container_name
de docker-compose.yaml
, então o contêiner seria nomeado automaticamente por docker-compose
- semelhante ao serviço, mas prefixado com o nome da pilha docker-compose
(o nome da pasta onde docker-compose.yaml
está localizado).