docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
it — интерактивный режим. Перейти в контейнер и запустить внутри контейнера команду
> -d — запустить контейнер в фоне (демоном) и вывести его ID
> -p port_localhost:port_docker_image — порты из докера на локалхост
> -e «TZ=Europe/Moscow» — указываем нашему контейнеру timezone
> -h HOSTNAME — присвоить имя хоста контейнеру
> —link <имя контейнера> — связать контейнеры с другим
> -v /local/path:/container/path/ — прокидываем в контейнер докера директорию с локальной машины
> --name CONTAINERNAME — присвоить имя нашему контейнеру
> --restart=[no/on-failure/always/unless-stopped] — варианты перезапуска контейнера при крэше
docker run [IMAGE NAME/ID] | запуск |
docker rename | переименовать контейнер |
docker rename | удалить контейнер |
docker update --cpu-shares 512 -m 300M | обновить контейнер |
docker start [CONTAINERNAME] | Запуск остановленного контейнера |
docker stop [CONTAINERNAME] | Остановка |
docker restart [CONTAINERNAME] | Перезагрузка |
docker pause [CONTAINERNAME] | Пауза (приостановка всех процессов контейнера) |
docker unpause [CONTAINERNAME] | Снятие паузы |
docker wait [CONTAINERNAME] | Блокировка (до остановки контейнера) |
docker kill [CONTAINERNAME] | Отправка SIGKILL (завершающего сигнала) |
docker kill -s HUP [CONTAINERNAME] | Отправка другого сигнала |
docker attach [CONTAINERNAME] | Подключение к существующему контейнеру |
docker ps | Вывести работающие контейнеры |
docker ps -a | Вывести все контейнеры |
docker logs [CONTAINERNAME] | Информация о контейнере |
docker events [CONTAINERNAME] | События контейнера |
docker port [CONTAINERNAME] | Публичные порты |
docker top [CONTAINERNAME] | Выполняющиеся процессы |
docker stats [CONTAINERNAME] | Использование ресурсов |
docker diff [CONTAINERNAME] | Изменения в файлах или директориях файловой системы контейнера |
docker exec -it name_of_container /bin/bash | Зайти в уже запущенный контейнер (точнее выполнить команду внутри контейнера) |
docker run -it -d --name my_container CONTAINER_ID /bin/bash | Запустить контейнер и открыть в нём bash |
docker cp some_files.conf docker_container:/home/docker/ | Копирование файлов внутрь контейнера |
docker images | Список образов |
docker images -f dangling=true | Вывести все неиспользуемые образы |
docker images -a | Вывести все образы (images) |
docker build -t my_docker . | Создание образа из текущего каталога с тегом "my_docker" |
docker build . | Создание образа из текущего каталога |
docker build github.com/creack/docker-firefox | Создание образа из репозитория на GitHub по указанному URL |
docker build - < Dockerfile | Создание образа из stdin с использованием Dockerfile из текущего каталога |
docker build - < context.tar.gz | Создание образа из stdin с использованием контекста, сохраненного в tar-архиве |
docker build -t eon/infinite . | Создание образа из текущего каталога с тегом "eon/infinite" |
docker build -f myOtherDockerfile . | Создание образа из текущего каталога, используя Dockerfile с именем "myOtherDockerfile" |
docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest | Создание образа из текущего каталога с двумя тегами: "shykes/myapp:1.0.2" и "shykes/myapp:latest" |
curl example.com/remote/Dockerfile | Получение Dockerfile по указанному URL с использованием curl |
docker build -f - . | Создание образа из stdin с использованием Dockerfile из текущего каталога |
docker rmi nginx | Удаление образа (с ключом --force удалит контейнер и образ) |
docker images prune docker rmi $(docker images -f dangling=true -q) |
Удаление всех неиспользуемых образов |
docker rmi -f $(docker images | grep "^[none]" | awk "{print $3}") | Удаление всех образов без тегов |
docker rmi $(docker images -a -q) | Удаление всех образов |
docker load < ubuntu.tar.gz docker load --input ubuntu.tar |
Загрузка репозитория в tar (из файла или стандартного ввода) |
docker save busybox > ubuntu.tar | Сохранение образа в tar-архив |
docker history | Просмотр истории образа |
docker commit nginx | Создание образа из контейнера |
docker tag nginx eon01/nginx | Тегирование образа |
docker system prune | Удаление всех неиспользуемых (не связанных с контейнерами) образов (Если добавить к команде ключ -a, то произойдет удаление всех остановленных контейнеров и неиспользуемых образов) |
Если монтируем пустой том с хоста, а в контейнере уже есть файлы, то они скопируются в том Если монтируем с хоста том с файлами, то они окажутся в контейнере Если мы монтируем не пустой том с хоста, а в контейнере по этому пути уже есть файлы, то они будут скрыты
docker volume create | Создание тома |
docker run --mount source=,target=/path/to/folder/in/container -d [IMAGE] | Монтируем с хоста в контейнер |
docker run --mount type=bind,source=/host/folder,target=/container/folder -d [IMAGE] | Монтируем с контейнера на хост |
docker volumes inspect | Посмотреть настройки тома |
docker volume ls | Вывести список всех томов с их названиями |
docker volume ls -f dangling=true | Вывести список всех томов не связанных с контейнерами |
docker volume rm | Удаление volumes по названию |
docker volume prune docker volume rm $(docker volume ls -f dangling=true -q) |
Удаление томов (volumes) несвязанных с контейнерами |
docker volume prune --filter "label!=keep” | Удаление неиспользуемых (dangling) томов по фильтру |
docker system prune | Удаление всех неиспользуемых объектов |
Host Volumes: docker run -v /opt/mysql_data:/var/lib/mysql mysql docker run -v /opt/app_conf:/etc/app/configs app |
происходит монтирование с жёсткого диска (из указанной директории), в контейнер |
Anonymous Volumes: docker run -v /var/lib/mysql mysql docker run -v /etc/app/configs app |
происходит создание /var/bin/docker/volumes/HASH/_data, где хранятся данные, которые находятся в /var/lib/mysql |
Named Volumes: docker run -v mysql_data:/var/lib/mysql mysql docker run -v app_conf:/etc/app/configs |
на хосте происходит создание volume по адресу /var/lib/docker/volumes/mysql_data/_data, далее эта директория монтируется в контейнер по адресу /var/lib/mysql |
FROM | устанавливает базовый образ, на основе которого вы строите свой образ. |
LABEL | добавляет метаданные к образу, такие как автор, версия и описание. |
RUN | выполняет команды внутри контейнера во время построения образа. Используется для установки пакетов, обновления системы и других задач. |
COPY и ADD | копируют файлы из локальной файловой системы в образ. COPY просто копирует файлы, а ADD может также распаковывать архивы и загружать файлы из URL. |
WORKDIR | устанавливает рабочую директорию для последующих инструкций. |
EXPOSE | объявляет порты, которые контейнер будет слушать во время выполнения. |
CMD | задает команду, которая будет выполнена при запуске контейнера. |
ENTRYPOINT | делает то же самое, но позволяет передавать параметры при запуске командой строки. |
ENV | устанавливает переменные среды в контейнере. |
USER | устанавливает пользователя, от которого выполняются инструкции RUN, CMD и ENTRYPOINT. |
VOLUME | создает точку монтирования для постоянных данных, которые могут быть обменены между контейнером и хост-системой или другими контейнерами. |
ARG | задает аргументы, которые могут быть переданы при сборке образа. |
ONBUILD | добавляет инструкции, которые будут выполнены при использовании вашего образа в качестве базового для другого образа. |
Если запуск без параметра --net (--network), то сеть default, к контейнерам можно подключаться, могут общаться между собой по внутренним IP внутри сети, но не могут общаться, используя свои имена при создании
Bridge: docker network create --drive bridge NAME |
создание сети типа BRIDGE (создаётся по умолчанию) контейнеры могут общаться между собой по IP-адресам и по DNS именам (--name NAME) |
Host: docker network create --drive host NAME |
контейнеры не получают своего IP-адреса, а используют IP-адрес хоста если хотим подключится к контейнеру из вне, указываем IP сервера |
None: docker network create --drive none NAME |
контейнеры изолированы, нельзя подключиться по IP-адресам к портам, но можно запустить команды локально сети не могут общаться между собой (из соображений безопасности) |
docker network create -d bridge --subnet 192.168.56.0/24 --gateway 192.168.56.1 myNet02 | создать сеть с именем myNet02, с заданным IP |
docker network ls | cписок всех существующих сетей |
docker network inspect myNet02 | инспектирование сети |
docker network rm <NET_NAME/ID> | Удалить сеть с именем <NET_NAME/ID> |
docker network connect myBridgeNet01 container3 | подключение контейнера (container3) к существующей сети myBridgeNet01 |
docker network disconnect myBridgeNet01 container3 | отключить контейнер (container3) от сети myBridgeNet01 |
MACVLAN vs IPVLAN
macvlan | у сервера имеется сетевая карта, которая имеет свой IP-адрес и MAC, контейнеры в этой сети также получают IP-адреса также сервер имеет свой MAC-адрес, а контейнеры в этой сети имеют свои MAC-адреса, по которым можно определить нужный контейнер |
ipvlan | имеется сервер со своим IP-адресом, также контейнеры в этой сети имеют свои IP-адреса MAC-адрес остаётся без изменений (одинаковых у сервера и контейнеров) |
docker swarm init | инициализация Swarm на текущей машине (менеджере). |
docker swarm join-token worker | команда для присоединения рабочего узла к Swarm |
docker swarm join-token manager | команда для присоединения дополнительного менеджера к Swarm |
docker service create --name [service_name] | создание сервиса |
docker service ls | список сервисов и их состояния. |
docker node ls | список узлов в Swarm |
docker service scale [service_name]=[replica_count] | масштабирование количества реплик сервиса |
docker service logs [service_name] | просмотр журналов сервиса |
docker service ps [service_name] | просмотр статуса реплик сервиса |
docker service update [service_name] | обновление конфигурации сервиса |
docker service rm [service_name] | удаление сервиса |
docker swarm leave --force | покидание Swarm на текущем узле |
Containers
docker-compose start | Запускает контейнеры, определенные в файле docker-compose.yml, если они были остановлены |
docker-compose stop | Останавливает работу контейнеров, определенных в файле docker-compose.yml, но сохраняет их состояние |
docker-compose pause | Приостанавливает выполнение контейнеров, сохраняя их текущее состояние. Ресурсы, такие как CPU и память, не будут выделены контейнерам во время приостановки. |
docker-compose unpause | Возобновляет выполнение приостановленных контейнеров |
docker-compose ps | Выводит статус контейнеров, запущенных с использованием docker-compose |
docker-compose up | Запускает контейнеры в соответствии с настройками, определенными в файле docker-compose.yml. Если контейнеры не существуют, они будут созданы |
docker-compose down | Останавливает и удаляет контейнеры, определенные в файле docker-compose.yml, а также удаляет сети и тома, связанные с этими контейнерами. |
version | Версия синтаксиса Docker Compose. Обычно устанавливается на текущую поддерживаемую версию, например, "3". |
services | Начало раздела для определения служб (контейнеров) в вашем приложении. |
service_name | Название службы. |
image | Указывает образ Docker, который будет использоваться для создания контейнера. |
ports | Определяет порты, которые будут проксироваться из контейнера в хост-систему. |
volumes | Монтирует тома или папки из хост-системы в контейнер. |
environment | Устанавливает переменные среды для контейнера. |
command | Позволяет задать команду, которая будет выполнена при запуске контейнера. |
depends_on | Определяет зависимости между службами, гарантирует, что одна служба запустится после другой. |
restart | Настройка поведения перезапуска контейнера. |
networks | Раздел для определения пользовательских сетей Docker. |
build | Сборка образа контейнера из указанных исходных кодов. |