Администрирование FreeBSD, Linux, ... docker: справка по командам Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


docker: справка по командам Печать
Добавил(а) microsin   

Основную справку можно получить командой docker --help, справку по конкретной команде можно получить командой docker команда --help, справку по опциям можно получить командой man docker.

[Основные команды]

  run          Создаст и запустит новый контейнер из образа.
  exec        Выполнит команду в работающем контейнере [8].
  ps            Выведет список контейнеров.
  build        Соберет образ из Dockerfile.
  pull          Загрузит образ из реестра.
  push        Выгрузит образ в реестр.
  images     Выведет список образов.
  login        Аутентификация в реестре.
  logout      Выход из реестра.
  search      Поиск образов на Docker Hub.
  version     Покажет информацию версии Docker.
  info          Отобразит системную информацию.

[Команды управления]

  builder         Управление сборками.
  buildx*        Docker Buildx - расширенные возможности сборки с помощью BuildKit.
  compose*    Docker Compose - определение и запуск мульти-контейнерных приложений.
  container     Управление контейнерами.
  context        Управление контекстами.
  image          Управление образами.
  manifest       Управление манифестами образов и списками манифестов.
  network       Управление сетями.
  plugin          Управление плагинами.
  system         Управление Docker.
  trust            Управление системой доверия на образах Docker.
  volume        Управление томами.
  swarm         Управление Swarm - фича управления кластером демонов Docker [1].

[Другие команды]

  attach        Подключение локальных стандартных потоков ввода, вывода и ошибок (stdin, stdout, stderr) к работающему контейнеру. Т. е. откроет еще один терминал для работающего контейнера.
  commit      Создание нового образа из изменений контейнера.
  cp              Копирование файлов/папок между контейнером и локальной файловой системой.
  create        Создание нового контейнера.
  diff             Инспекция изменений файлов или директорий на файловой системе контейнера.
  events        Получение событий реального времени (real time events) из сервера.
  export        Экспорт файловой системы контейнера в tar-архив.
  history       Показать историю образа.
  import        Импорт содержимого из tar-архива для создания файловой системы образа.
  inspect       Возвратить низкоуровневую информацию на объектах Docker.
  kill             Прибьет один или большее количество запущенных контейнеров.
  load           Загрузит образ из tar-архива или STDIN.
  logs           Выборка лога команд контейнера.
  pause         Паузе всех процессов одного или нескольких контейнеров.
  port           Список отображений портов или определенного отображения для контейнера.
  rename      Переименование контейнера.
  restart       Перезапуск одного или нескольких контейнеров.
  rm             Удаление одного или нескольких контейнеров.
  rmi            Удаление одного или нескольких образов.
  save          Сохранение одного или нескольких образов в tar-архив (по умолчанию работает перенаправление в STDOUT).
  start          Запуск одного или нескольких остановленных контейнеров.
  stats          Отображение статистики использования действующего потока (live stream) контейнера или нескольких контейнеров.
  stop           Остановка одного или нескольких работающих контейнеров.
  tag            Создание тега TARGET_IMAGE, который ссылается на SOURCE_IMAGE.
  top            Отображение работающих процессов контейнера.
  unpause     Снятие с паузы всех процессов одного или нескольких контейнеров.
  update       Обновление конфигурации одного или нескольких контейнеров.
  wait           Блокировка, пока не остановится один или несколько контейнеров, затем печать их кодов завершения (exit codes).

[Глобальные опции]

      --config string        Место расположения файлов конфигурации клиента (умолчание
                                  "/home/имядомена/имяпользователя/.docker").

  -c, --context string     Имя контекста, используемого для подключения к демону
                                  (переназначает переменную окружения DOCKER_HOST и контекст
                                  по умолчанию, установленный через "docker context use").

  -D, --debug               Разрешает режим отладки.

  -H, --host list             Сокет демона для подключения.

  -l, --log-level string    Установит уровень лога "debug", "info", "warn", "error",
                                  "fatal" (по умолчанию "info").

      --tls                      Использовать TLS; подразумевает --tlsverify.

      --tlscacert string    Доверять только сертификатам, подписанным этим CA (по умолчанию
                                  используется "/home/имядомена/имяпользователя/.docker/ca.pem").

      --tlscert string       Путь до файла TLS-сертификата (по умолчанию используется
                                  "/home/имядомена/имяпользователя/.docker/cert.pem")

      --tlskey string        Путь до файла ключа TLS (по умолчанию используется
                                  "/home/имядомена/имяпользователя/.docker/key.pem")

      --tlsverify              Использовать TLS и проверять remote.

  -v, --version               Напечатать информацию версии и выйти.

Дополнительную документацию по использованию Docker см. на официальном сайте [2].

[Dockerfile]

Это специальный список инструкций для построения нового образа docker. Список инструкций большой, подробно ознакомиться с ними можно в документации [3]. Вот краткое описание основных инструкций:

ARG. Определяет переменную, которую пользователи могут передать во время сборки сборщику образа, когда выполняется команда docker build с флагом --build-arg < varname>=< value>.

ARG < name>[=< default value>]

Dockerfile может содержать одну или несколько инструкций ARG. Вот пример правильного Dockerfile:

FROM busyboxARG user1ARG buildno# ...

Инструкция ARG может опционально включать значение по умолчанию:

FROM busyboxARG user1=someuserARG buildno=1# ...

COPY. Копирует файлы и папки с системы хоста (ваш локальный компьютер) в систему образа/контейнера. Вторая форма используется для путей, в которых присутствуют пробелы.

COPY [OPTIONS] < src> ... < dest>COPY [OPTIONS] ["< src>", ... "< dest>"]

Пример, копирующий файл myapp_java_ver02.jar, находящийся на локальном компьютере, где работает Docker, в файловую систему образа как файл /app/myapp.jar:

COPY /build/myproject/myapp_java_ver02.jar /app/myapp.jar

ENTRYPOINT. Позволяет сконфигурировать контейнер, который будет запускать исполняемый файл. Форма exec, предпочтительная [6]:

ENTRYPOINT ["исполняемый_файл", "param1", "param2"]

Форма shell [6]:

ENTRYPOINT команда param1 param2

Ниже показан пример запуска приложения Java в исполняемом файле myapp.jar. Подразумевается, что предварительно инструкцией WORKDIR был установлен текущий каталог, где находится файл myapp.jar.

ENTRYPOINT ["java", "-jar", "myapp.jar"]

ENV. Установит переменную окружения образа.

ENV < key>=< value> ...

Инструкция ENV установит переменную окружения с именем < key> в значение < value>. Это значение будет в окружении для всех последующих инструкций build stage. Значение будет интерпретироваться для других переменных окружения, поэтому символы кавычек будут удалены, если они не были экранированы. Как и при парсинге командной строки, кавычки и обратные слеши могут использоваться, чтобы в значении могли быть пробелы.

FROM. Инициализирует новый build stage и устанавливает базовый образ (образ источника) для последующих инструкций. Таким образом, правильно составленный Dockerfile должен начинаться с инструкции FROM. Здесь image может быть любым корректным образом.

FROM [--platform=< platform>] < image> [AS < name>]

Пример для базового образа Ubuntu версии 18.04:

FROM ubuntu:18.04

Пример для базового образа Linux, где содержится OpenJDK версии 17-jdk-slim-buster:

FROM openjdk:17-jdk-slim-buster

Базовые образы можно найти на Docker Hub [4].

RUN. Выполнит любую команду для создания нового слоя поверх текущего образа. Добавленный слой используется в следующем шаге Dockerfile. Могут быть две формы команды RUN, shell-форма и exec-форма [6]:

# Shell-форма:
RUN [OPTIONS] < command> ...

# Exec-форма:
RUN [OPTIONS] [ "< command>", ... ]

Подробнее про команду RUN см. [7].

WORKDIR. Установит рабочую директорию для любой последующей инструкции RUN, CMD, ENTRYPOINT, COPY и ADD. Если WORKDIR не существует, то она будет создана, даже если она не используется любой последующей инструкцией Dockerfile.

WORKDIR /path/to/workdir

Пример для папки /app, находящейся внутри запускаемого образа/контейнера:

WORKDIR /app

Запуск Dockerfile для сборки образа. Например, чтобы собрать образ myimage1 с помощью файла Dockerfile, находящемся в текущем каталоге, можно использовать команду:

$ docker build -t myimage1 .

Ниже показан пример сборки образа myimage2 из Dockerfile-файла с именем Dockerfile2. В сборку передается также аргумент окружения LOCATION [5].

$ docker build -t "myimage2" --build-arg LOCATION=$PWD - < Dockerfile2

[FAQ]

Q001. Как открыть еще один терминал к работающему контейнеру?

Это можно сделать командой docker attach идентификатор_контейнера. Идентификатор работающего контейнера можно узнать командой docker ps. Например:

docker_host:~$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS      PORTS     NAMES
a20af5bdf230   myimage   "/bin/bash"   4 days ago   Up 4 days             myContainer
docker_host:~$ docker atatch a20af5bdf230
myimage2@a20af5bdf230:~/Build/sdk-mips$ ls ~/Shared
temp

Выйти их терминала контейнера можно командой exit:

myimage2@a20af5bdf230:~/Build/sdk-mips$ exit
docker_host:~$

Q002. Как перенести контейнер со всем содержимым на другой компьютер?

Сценарий: есть контейнер с Ubuntu 18.04, в котором установлена среда кросс-компиляции для ARM MIPS Realtek, работающий на хосте Ubuntu 22.04. Нужно перенести его на docker, работающий на Windows 10.

Процесс по шагам:

1. Сначала надо убедиться, что контейнер остановлен, командой docker ps.

2. Командой docker export с клавишей Tab узнайте имя (или ID) нужного контейнера.

3. Следующая команда зкспортирует контейнер в TAR GZIP архив, который можно перенести на флешке на другой компьютер. Архив будет сохранен в файл ~/archive.tar.gz:

$ docker export имя_контейнера | gzip > ~/archive.tar.gz

Запишите файл archive.tar.gz на флешку.

4. Установите флешку в компьютер, куда нужно импортировать контейнер. Командой docker import импортируйте файловую систему контейнера, что создаст образ в докере:

>docker import e:\archive.tar.gz

5. Командой docker images узнайте ID созданного образа.

6. Командой docker run создайте контейнер и запустите его:

>docker run -it --name имя_контейнера ID_образа /bin/bash

[Ссылки]

1. Docker Swarm mode site:docs.docker.com.
2. Docker: руководства и документация.
3. Dockerfile reference site:docs.docker.com.
4. Docker Hub.
5. Set build-time variables (--build-arg).
6. Shell and exec form.
7. Dockerfile RUN.
8Docker: команда exec.
9. docker: часто используемые команды.

 

Добавить комментарий


Защитный код
Обновить

Top of Page