Как получить доступ к экземпляру контейнера Docker, используя имя изображения? - PullRequest
0 голосов
/ 12 декабря 2018

Каждый раз, когда я хочу получить доступ к Docker-контейнеру, я должен выполнить команду

docker ps

Команда покажет идентификатор работающего контейнера, после этого мне нужно скопировать идентификатор контейнера и использовать его.в следующей команде:

docker exec -it / bin / bash

Есть ли способ избежать поиска идентификатора контейнера каждый раз, когда я хочу получить доступ к этому контейнеру.

Ответы [ 4 ]

0 голосов
/ 12 декабря 2018

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

ДляПример: я собираюсь запустить образ centOS и хочу назвать его dev-centos-1

. Вы можете написать для этого файл docker или выполнить следующую команду, чтобы поднять ваш контейнер

docker container run --name dev-centos-1 -d centos:latest

когда этот контейнер запущен, вы можете делать все по его имени:

docker stats dev-centos-1

docker logs dev-centos-1

или даже подключаться к нему, bash:

docker exec -it dev-centos-1 bash

Это всегда считается лучшим способом управленияваши контейнеры в ваших условиях.

Спасибо.

0 голосов
/ 12 декабря 2018

Вы можете также выполнить docker exec с именем контейнера.например

root@qualys-virtual-machine:~/alpine-node-docker# docker ps
CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
fc5932f7ff9c        selenium/node-chrome:3.14.0-gallium    "/opt/bin/entry_poin…"   5 days ago          Up 5 days                                    root_chrome_3
8caa58ce6056        selenium/node-chrome:3.14.0-gallium    "/opt/bin/entry_poin…"   5 days ago          Up 5 days                                    root_chrome_5

теперь я могу сделать docker exec с именами контейнеров, такими как root_chrome_3

docker exec -it root_chrome_3 /bin/bash

, чтобы дать имя --name в команде запуска.

0 голосов
/ 12 декабря 2018

Вы должны назвать свой контейнер и указать container name в команде docker exec, а не имя изображения.

Таким образом, вы должны добавить --name=CONTAINER_NAME в вашу команду docker run и когда вы хотитеуправлять им просто используйте docker exec -it CONTAINER_NAME bash.

Если вы используете docker-compose для запуска вашего контейнера, добавьте container_name: CONTAINER_NAME под служебным блоком, чтобы назвать его.

Пример:

version: '3.1'

services:
  server:
    image: nginx:latest
    container_name: nginx-server
    restart: always
    ports:
      - 80:80
0 голосов
/ 12 декабря 2018

Я могу использовать скрипт Folloiwng Bash:

#!/bin/bash
container_id=$(docker ps|grep <your container image name>|cut -d' ' -f1)
echo $container_id
cmd="docker exec -u 0 -it "$container_id" /bin/bash"
echo $cmd
exec $cmd

В моем случае я сохранил скрипт в файле go_to_my_container.sh.Вы можете запустить следующую команду для доступа к вашему контейнеру:

sh go_to_my_container
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...