Работа с контейнерами Docker | Серия Docker

контейнер Docker

Предыдущий обзор:

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

Создайте и запустите контейнер

использоватьdocker runкоманда для создания и запуска контейнера:

$ docker run -it centos /bin/echo 'hello world'
hello world

-tПараметр указывает Docker выделить псевдотерминал и привязать его к стандартному вводу контейнера,-iПараметр сохраняет открытым стандартный ввод контейнера.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
df84684c3888        centos              "/bin/echo 'hello wo…"   10 seconds ago      Exited (0) 7 seconds ago                       admiring_noyce

docker psКоманда перечисляет текущие контейнеры.Вы можете видеть, что только что выполненный контейнер закрывается сразу после вывода информации. Есть ли способ заставить контейнер работать в фоновом режиме? Ответ, конечно, да.

использовать-dПараметр разрешает выполнение контейнера в фоновом режиме в качестве процесса-демона, что также наиболее часто используется в работе.

$ docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
fcb07a324388d58883e212ff5675ad7947a22c731f677d1a37ff7bc3d8bfa9a7

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fcb07a324388        centos              "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            beautiful_northcutt

Таким образом, контейнер работает в фоновом режиме.

Другой способ - использоватьdocker createкоманда для создания контейнера, а затем используйтеdocker startДля запуска контейнера две команды эквивалентныdocker runВо-первых, этот метод обычно не используется, поэтому я не буду вводить его дальше.

Давай поговоримdocker runИстория, стоящая за этим, что Docker делает для нас за этой командой?

  • Проверить, существует ли указанное зеркало локально, и загрузить его из публичного репозитория, если оно не существует;
  • Создайте и запустите контейнер с помощью образа;
  • Выделите файловую систему и смонтируйте слой для чтения и записи вне зеркального слоя, доступного только для чтения;
  • Мост виртуального интерфейса от интерфейса моста, настроенного на хост-узле, к контейнеру;
  • Настроить IP-адрес из пула адресов в контейнер;
  • выполнять указанные пользователем команды или приложения;
  • Контейнер завершается после выполнения.

в контейнер

Когда контейнер выполняется в фоновом режиме, используйтеdocker execКоманда попадает в контейнер.

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fcb07a324388        centos              "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            beautiful_northcutt

$ docker exec -it fcb07a324388 /bin/bash
[root@fcb07a324388 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@fcb07a324388 /]#

После входа в контейнер это система Linux.Команды, поддерживаемые Linux, в основном поддерживаются контейнером.

Эта команда очень важна, иногда возникает проблема с нашим приложением, если мы не можем увидеть проблему просто по логам, нам нужно войти в контейнер, чтобы увидеть реальную ситуацию.

Если вы хотите бросить, простоexitкоманда сделает.

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

Итак, эта команда сейчас практически бесполезна.

стоп-контейнер

использоватьdocker stopкоманда для остановки контейнера.

$ docker stop fcb
fcb
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
fcb07a324388        centos              "/bin/sh -c 'while t…"   23 minutes ago      Exited (137) 4 seconds ago                       beautiful_northcutt

Если вы хотите начать заново, используйтеdocker start.

Посмотреть контейнеры

Как описано выше, используйтеdocker psкоманда для просмотра текущего контейнера.

использоватьdocker logsПросмотр вывода журнала контейнера.

использоватьdocker container inspectКоманда для просмотра сведений о контейнере.

использоватьdocker topКоманда для просмотра информации о процессе в контейнере аналогична команде top в Linux.

использоватьdocker statsКоманда для просмотра процессора контейнера, памяти, хранилища и другой информации.

использоватьdocker container portПроверьте сопоставление портов контейнера.

Импорт и экспорт контейнеров

использоватьdocker exportкоманда для экспорта контейнера в файл.

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fcb07a324388        centos              "/bin/sh -c 'while t…"   34 minutes ago      Up 9 minutes                            beautiful_northcutt
$ docker export -o centos.tar fcb
$ ls
centos.tar

использоватьdocker importкоманда для импорта файла контейнера в качестве локального образа.

$ docker import centos.tar test/centos
sha256:f994c062dae063ffb8c97191d951b9beaac73d99023120191dbbc9741d725578
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/centos         latest              f994c062dae0        6 seconds ago       237MB

В предыдущей статье А.docker loadКоманда также предназначена для импорта файла на локальное зеркало, так в чем же между ними разница?

В файлах моментальных снимков контейнера будет удалена вся история и метаданные, а в файлах хранения изображений будет сохранена полная запись, но они будут больше.

удалить контейнер

использоватьdocker rmкоманда для удаления остановленного контейнера, если контейнер запущен, вы можете добавить-fПараметр принудительно удален.

Справочная документация:

Книга "Введение и практика технологии Docker"

woohoo.dock и info.net/docker% ой 5% ах…

Прошлые основные моменты:

Технический блог:

GitHub.com/Делайте это с душой/Особые…

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