Общие команды Docker, которые необходимо знать


Общие команды Docker, которые вам необходимо знать

Шпаргалка по Docker CLI

docker build

docker build [options] .
  -t "app/container_name"    # name
  --build-arg APP_HOME=$APP_HOME    # Set build-time variables

Создание образа из Docker-файла.

docker run.

docker run [options] IMAGE
  # see `docker create` for options

Пример

$ docker run -it debian:buster /bin/bash

Запуск команды в image.

Управление контейнерами

1 . docker create

docker create [options] IMAGE
  -a, --attach               # attach stdout/err
  -i, --interactive          # attach stdin (interactive)
  -t, --tty                  # pseudo-tty
      --name NAME            # name your image
  -p, --publish 5000:5000    # port map (host:container)
      --expose 5432          # expose a port to linked containers
  -P, --publish-all          # publish all ports
      --link container:alias # linking
  -v, --volume `pwd`:/app    # mount (absolute paths needed)
  -e, --env NAME=hello       # env vars

Пример

$ docker create --name app_redis_1 
  --expose 6379 
  redis:3.0.2

Создать контейнер из изображения.

2. docker exec.

docker exec [options] CONTAINER COMMAND
  -d, --detach        # run in background
  -i, --interactive   # stdin
  -t, --tty           # interactive

Пример

$ docker exec app_web_1 tail logs/development.log
$ docker exec -t -i app_web_1 rails c

Запуск команд в контейнере.

3. docker start

docker start [options] CONTAINER
  -a, --attach        # attach stdout/err
  -i, --interactive   # attach stdin

docker stop [options] CONTAINER

Запуск/остановка контейнера.

4 . docker ps.

$ docker ps
$ docker ps -a
$ docker kill $ID

Управление контейнером с помощью ps/kill.

5. docker logs.

$ docker logs $ID
$ docker logs $ID 2>&1 | less
$ docker logs -f $ID # Follow log output

Посмотрите, что регистрируется в контейнере.

Управление изображениями

1. docker images

$ docker images
  REPOSITORY   TAG        ID
  ubuntu       12.10      b750fe78269d
  me/myapp     latest     7b2431a8d968
$ docker images -a   # also show intermediate

Управляет изображениями.

2. docker rmi.

docker rmi b750fe78269d

Удаляет images.

Управление очисткой

1. Очистить все

docker system prune

Очищает висячие образы, контейнеры, тома и сети (т.е. не связанные с контейнером).

docker system prune -a

Дополнительно удаляет все остановленные контейнеры и все неиспользуемые образы (не только висячие).

2. Контейнеры

# Stop all running containers
docker stop $(docker ps -a -q)

# Delete stopped containers
docker container prune

3.Образы

docker image prune [-a]

Удалите все образы

4. Тома

docker volume prune

Удалите все тома

Шпаргалка по docker-compose

Общие команды

# Starts existing containers for a service.
docker-compose start

# Stops running containers without removing them.
docker-compose stop

# Pauses running containers of a service.
docker-compose pause

# Unpauses paused containers of a service.
docker-compose unpause

# Lists containers.
docker-compose ps

# Builds, (re)creates, starts, and attaches to containers for a service.
docker-compose up

# Stops containers and removes containers, networks, volumes, and images created by up.
docker-compose down

Советы и рекомендации

#!/bin/sh

docker-compose down &&
docker-compose rm &&
docker-compose build &&
docker-compose up -d
sleep 1
docker rmi $(docker images -f "dangling=true" -q)
echo y | docker volume prune
printf "n... HAPPY CODING ...ne[0m"
Вход в полноэкранный режим Выход из полноэкранного режима

Удаление неиспользуемых контейнеров

Контейнеры Docker имеют поле status, указывающее, на каком этапе жизненного цикла они находятся. Согласно документации, status может быть одним из created, restarting, running, removing, paused, exited, или dead.

Сначала нам нужно получить идентификаторы контейнеров со статусом exited или dead следующим образом:

docker ps --filter status=exited --filter status=dead -q

Затем мы можем повторно использовать приведенную выше команду для удаления этих контейнеров с помощью следующей команды:

docker rm $(docker ps --filter=status=exited --filter=status=dead -q)

Альтернативой для удаления всех остановленных контейнеров является однострочный вариант:

docker container prune

Удаление всех контейнеров

Сначала нам нужно остановить все запущенные контейнеры. Мы можем получить идентификаторы запущенных контейнеров следующим образом:

docker ps -q

Затем мы можем остановить все контейнеры с помощью:

docker stop $(docker ps -q)

Вы можете заменить docker stop на docker kill в приведенной выше команде, чтобы принудительно остановить контейнеры.

Наконец, мы можем удалить все контейнеры:

docker rm $(docker ps -a -q)

Удаление висячих образов

Висячие изображения, как сказано в документации, это конечные изображения (т.е. не промежуточные слои сборки), которые больше не имеют связанного с ними тега.

Мы можем получить идентификатор изображения для таких изображений следующим образом:

docker images --filter dangling=true -q

Затем мы можем удалить эти изображения с помощью следующей команды:

docker rmi $(docker images --filter dangling=true -q)

Для удаления всех висячих изображений можно воспользоваться альтернативным вариантом:

docker image prune

Удаление всех образов

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

Аналогично предыдущему разделу, нам нужны идентификаторы всех образов, которые мы можем получить с помощью:

docker images -a -q

Затем мы можем объединить его с docker rmi:

docker rmi $(docker images -a -q)

Для удаления всех изображений можно воспользоваться альтернативным способом:

docker image prune -a

Удаление томов

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

Тогда для удаления всех томов docker используйте:

docker volume prune

Удаление сетей

Хотя сети docker не занимают много дискового пространства, они создают правила iptables, сетевые устройства и записи в таблице маршрутизации. Чтобы удалить эти объекты, вы можете выполнить команду:

docker network prune

Удаление всего

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

Для удаления контейнеров, образов и сетей используйте:

docker system prune

Для удаления контейнеров, образов, сетей и томов используйте

docker system prune --volumes

Оцените статью
devanswers.ru
Добавить комментарий