docker: справка по командам |
![]() |
Добавил(а) microsin |
Основную справку можно получить командой docker --help, справку по конкретной команде можно получить командой docker команда --help, справку по опциям можно получить командой man docker. [Основные команды] run Создаст и запустит новый контейнер из образа. [Команды управления] builder Управление сборками. [Другие команды] attach Подключение локальных стандартных потоков ввода, вывода и ошибок (stdin, stdout, stderr) к работающему контейнеру. Т. е. откроет еще один терминал для работающего контейнера. [Глобальные опции] --config string Место расположения файлов конфигурации клиента (умолчание -c, --context string Имя контекста, используемого для подключения к демону -D, --debug Разрешает режим отладки. -H, --host list Сокет демона для подключения. -l, --log-level string Установит уровень лога "debug", "info", "warn", "error", --tls Использовать TLS; подразумевает --tlsverify. --tlscacert string Доверять только сертификатам, подписанным этим CA (по умолчанию --tlscert string Путь до файла TLS-сертификата (по умолчанию используется --tlskey string Путь до файла ключа TLS (по умолчанию используется --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 см. [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. |