English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Использование контейнеров Docker

Клиент Docker

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

w3codebox@w3codebox:~# docker

Через команду docker command --help Более подробное понимание метода использования指定的 команды Docker.

Например, чтобы увидеть docker stats Конкретное использование команды:

w3codebox@w3codebox:~# docker stats --help

Использование контейнера

Получение镜像

Если у нас нет локальной копии镜像 ubuntu, мы можем использовать команду docker pull для загрузки镜像 ubuntu:

$ docker pull ubuntu

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

Следующие команды используют镜像 ubuntu для запуска контейнера, параметры позволяют входить в контейнер в командном режиме:

$ docker run -it ubuntu /bin/bash

Объяснение параметров:

  • -i: Интерактивная операция.

  • -t: Терминал.

  • ubuntu:/ubuntu

  • /bin/bashКоманда,放在镜像名后面的是命令,в данном случае мы хотим интерактивную Shell, поэтому используем /bin/bash.

Чтобы выйти из терминала, введите exit:

root@ed09e4490c57:/# exit

Запуск остановленного контейнера

Команда для просмотра всех контейнеров:

$ docker ps -a

Нажмите на изображение, чтобы увидеть его в放大镜е:

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

$ docker start b750bbbcfd88

Рабочий процесс в фоновом режиме

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

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

Нажмите на изображение, чтобы увидеть его в放大镜е:

Примечание:Если использовать параметр -d, по умолчанию в контейнер не войти, чтобы войти в контейнер, нужно использовать команду docker exec(об этом будет рассказано позже).

Остановить контейнер

Команда для остановки контейнера如下:

$ docker stop <ID контейнера>

Остановленные контейнеры можно перезапустить с помощью docker restart:

$ docker restart <ID контейнера>

Войти в контейнер

При использовании -d Если использовать параметр, контейнер запустится в фоновом режиме. Чтобы войти в контейнер, можно использовать следующую команду:

  • docker attach

  • docker execРекомендуется использовать команду docker exec, так как при выходе из контейнера терминала контейнер не останавливается.

Команда attach

Ниже показан пример использования команды docker attach.

$ docker attach 1e560fca3906

Внимание: Если из этого контейнера выйти, это приведет к остановке контейнера.

Команда exec

Ниже показан пример использования команды docker exec.

docker exec -it 243c32535da7 /bin/bash

Внимание: Если из этого контейнера выйти, контейнер не остановится, поэтому рекомендуется использовать docker exec причина.

Более подробную информацию можно получить, используя команду docker exec --help.

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

Экспортировать контейнер

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

$ docker export 1e560fca3906 > ubuntu.tar

Экспортировать снимок контейнера 1e560fca3906 в локальный файл ubuntu.tar.

Таким образом, снимок контейнера будет выгружен в локальный файл.

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

Используя docker import, можно импортировать из файла снимка контейнера в образ, следующий пример импортирует файл снимка ubuntu.tar в образ test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

Кроме того, контейнеры можно импортировать, указав URL или某个 каталог, например:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

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

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

$ docker rm -f 1e560fca3906

Эта команда может удалить все контейнеры, находящиеся в состоянии остановки.

$ docker container prune

Запуск веб-приложения

Прежде чем мы запустили контейнер, у него не было особого значения.

Давайте попробуем использовать Docker для создания веб-приложения.

Мы будем запускать приложение Python Flask в контейнере Docker для запуска веб-приложения.

w3codebox@w3codebox:~# docker pull training/webapp  # загрузить изображение
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

Объяснение параметров:

  • -d:Запуск контейнера в фоновом режиме.

  • -P:Рандомно настроить сетевые порты внутри контейнера на порт хоста, который мы используем.

Просмотр контейнера WEB приложения

Используйте docker ps, чтобы увидеть запущенные контейнеры:

w3codebox@w3codebox:~#  docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp

Здесь добавлена информация о портах.

PORTS
0.0.0.0:32769->5000/tcp

Docker открыл порты 5000 (по умолчанию порт Python Flask) для маппинга на порт 32769 хоста.

В этом случае мы можем访问 WEB приложение через браузер

Мы также можем настроить другой порт с помощью параметра -p:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker psПросмотр запущенных контейнеров

w3codebox@w3codebox:~#  docker ps
КОНТЕЙНЕР ИД        ИЗОБРАЖЕНИЕ                             ПОРТЫ                     ИМЯ
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp   xenodochial_hoov

внутренний порт 5000 контейнера настроен на порту 5000 локального хоста.

краткий способ доступа к сетевому порту

через docker ps Команда может показать портовую маппинг контейнераdocker также предоставляет другой快捷 способ docker portиспользуя docker port Позволяет просмотреть, как определенный порт (ID или имя) контейнера карта на порту хоста.

Верхняя созданная нами контейнер web приложения ID bf08b7f2cd89  Имя wizardly_chandrasekhar.

Я могу использовать docker port bf08b7f2cd89 или docker port wizardly_chandrasekhar, чтобы просмотреть карту портов контейнера.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp        ->        0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp        ->        0.0.0.0:5000

Просмотр лога WEB приложения

docker logs [ID или имя] позволяет просмотреть стандартный вывод контейнера.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 *        Запущено на http://0.0.0.0:5000/        (Нажмите CTRL+C, чтобы выйти)
192.168.239.1        -        -        [09/May/2016 16:30:37]        "GET        /        HTTP/1.1"        200        -
192.168.239.1        -        -        [09/May/2016 16:30:37]        "GET        /favicon.ico        HTTP/1.1"        404        -

-f: Позвольте docker logs Как использовать tail -f Так же выводить стандартный вывод контейнера.

Из вышеупомянутого мы можем увидеть, что приложение использует порт 5000 и мы можем увидеть лог доступа к приложению.

Просмотр процессов контейнера WEB приложения

Мы также можем использовать docker top, чтобы просмотреть процессы, выполняющиеся в контейнере

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID        PID        PPID        ...        ВРЕМЯ        CMD
root        23245        23228        ...        00:00:00        python app.py

Проверка WEB приложения

использование docker inspect ПРИМЕНЯЕМ ДЛЯ ПОСМОТРА ВНУТРЕННИХ ИНФОРМАЦИЙ Дocker. ОН ВРАЩАЕТ JSON ФАЙЛ, ЗАПИСЫВАЮЩИЙ КОНФИГУРАЦИЮ И СОСТОЯНИЕ КОНТЕЙНЕРА.

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": "2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            
            
            
            
            
            
            
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        ,
......

ОСТАНОВКА КОНТЕЙНЕРА ВEB ПРИЛОЖЕНИЯ

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

ПЕРЕЗАГРУЖАЕМ КОНТЕЙНЕР ВEB ПРИЛОЖЕНИЯ

ОСТАНОВЛЕННЫЙ КОНТЕЙНЕР, МЫ МОЖЕМ ИСПОЛЬЗОВАТЬ КОМАНДУ docker start ДЛЯ ЕГО ЗАПУСКА.

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l ИЗВЛЕЧАЕТ ПОСЛЕДНЕЙСОЗДАННЫЙ КОНТЕЙНЕР:

#  docker ps -l 
КОНТЕЙНЕР ИД        ИЗОБРАЖЕНИЕ                             ПОРТЫ                     ИМЯ
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

Работающий контейнер, мы можем использовать команду docker restart, чтобы перезапустить его.

Удаление контейнера веб-приложения

Мы можем использовать команду docker rm, чтобы удалить ненужные контейнеры

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

При удалении контейнера, контейнер должен быть в停止ованном состоянии,否则 появится следующая ошибка

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
Ошибочный ответ от демона: Вы не можете удалить работающий контейнер bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Остановите контейнер перед попыткой удаления или强制 удалите