Выполнять команду в подключенном контейнере докера

Есть ли какой-либо способ для команды exec изнутри одного контейнера докера в связанном контейнере докера? Я не хочу команду exec из хоста.

Ответы

Ответ 1

Пока у вас есть доступ к чему-то вроде сокета-докера в вашем контейнере, вы можете запускать любую команду внутри любого контейнера докеров, неважно, связано ли это. Например:

# run a container and link it to `other`
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock \
           --link other:other myimage bash -l
bash$ docker exec --it other echo hello

Это работает, даже если ссылка не указана.

Ответ 2

С docker-compose:

version: '2.1'

services:

  site:
    image: ubuntu
    container_name: test-site
    command: sleep 999999

  dkr:
    image: docker
    privileged: true
    working_dir: "/dkr"
    volumes:
      - ".:/dkr"
      - "/var/run/docker.sock:/var/run/docker.sock"
    command: docker ps -a

Затем попробуйте:

docker-compose up -d site
docker-compose up dkr

результат:

Attaching to tmp_dkr_1
dkr_1   | CONTAINER ID        IMAGE                             COMMAND                  CREATED                  STATUS                   PORTS                     NAMES
dkr_1   | 25e382142b2e        docker                            "docker-entrypoint..."   Less than a second ago   Up Less than a second                              tmp_dkr_1

Пример проекта

https://github.com/reduardo7/docker-container-access