English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Основные концепции docker
Docker — это开源 engine контейнеров, который позволяет разработчикам打包 свои приложения и зависимости в передвижные контейнеры и发布ать их на любую популярную Linux-машину.
Docker — это открытая платформа, которая重新定义ла процесс разработки, тестирования, доставки и развертывания программ, Docker можно назвать «создай один раз, запусти везде», что является концепцией Docker «Build once, Run anywhere»
Создание образов
Существует три способа создания образов:
Создание на основе существующего контейнера
Импорт из локального шаблона
# docker load < centos_7.1.tar
Создание на основе существующего контейнера
Основным способом использования команды docker commit является:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]]主要包括:
-a ,--author="" Информация о авторе
-m,--message="" Сообщение для коммита
-p,--pause=true Остановить контейнер при коммиту
Например:
# docker run -it centos /bin/bash [root@d7e7ac1cbca2 /]# touch test [root@d7e7ac1cbca2 /]# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var # docker commit -m "add a file" -a "kafeikele" de6 centos_copy 5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos_copy latest 5d318afa9e6f 13 seconds ago 196.7 MB
Импорт из локального шаблона
Рекомендуется использовать шаблоны, предоставляемые openVZ, для создания
https://openvz.org/Download/templates/precreated #cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest
Сохранение и импорт образов
# docker images centos 7.1.1503 47a77536ad4c 8 weeks ago 212.1 MB # docker save -o centos_7.1.tar centos:7.1.1503 # docker load --input centos_7.1.tar # docker load --input centos_7.1.tar
# docker load < centos_7.1.tar
Основано на dockerfile
Далее详细介绍
# docker run centos echo "hello world" Не удалось найти образ 'centos:latest' локально latest: Загружается из centos 47d44cb6f252: Загрузка завершена 168a69b62202: Загрузка завершена 812e9d9d677f: Загрузка завершена 4234bfdd88f8: Загрузка завершена ce20c473cd8a: Загрузка завершена centos:latest: Образ, который вы тянете, был проверен. Важно: проверка образа является технологической демонстрацией и не должна использоваться для обеспечения security. Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5 Status: Загружена новейшая версия образа для centos:latest hello world
Объяснение команд:
docker run: стандартная команда запуска контейнера
centos: имя образа, по умолчанию latest
echo и последующее содержимое: команды, выполняемые после запуска контейнера
Запуск интерактивного контейнера
docker run -it centos /bin/bash
*Примечание: -t указывает на то, что в контейнере указывается поддельный терминал или терминал, -i указывает на то, что мы можем взаимодействовать с STDIN внутри контейнера
Запуск docker контейнера в режиме услуги
Если вы провели реальный тест, вы, возможно, обнаружили, что после запуска первого контейнера 'hello world' и выполнения команды echo он выйдет из себя, а второй интерактивный контейнер выйдет из себя, только если пользователь выйдет из bash текущего контейнера. Это явно не удовлетворяет требованиям длительного выполнения услуги, поэтому docker run предоставляет параметр '-d', который позволяет запускать контейнер в виде демона.
docker run -d centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; <br>179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33"
Эта длинная строка叫做 идентификатор контейнера. Это уникальный идентификатор контейнера, поэтому мы можем использовать его для операций с контейнером, например, для просмотра журналов, остановки или удаления контейнера и т.д.
dock logs 179fc7f17c358834364d
А почему используется死 цикл для вывода?
Потому что если это не死循环, то после одного вывода процесс в контейнере заканчивается. Если единственный процесс контейнера заканчивается, контейнер останавливается. Поэтому, чтобы запускать конкретную службу в контейнере, эта служба herself в контейнере также должна быть запущена в режиме демона.
docker run [ОПЦИИ] ИЗОБРАЖЕНИЕ [КОМАНДА] [Аргументы...]
Основные параметры:
-d : Запуск контейнера в фоновом режиме
-t : Обеспечение виртуального терминала
-i : Обеспечение интерактивного ввода, обычно используется вместе с “-t”, если используется только “-i”, то контейнер после запуска не может быть退出
-v : Направление объема к контейнеру, например: -p /data/www:/var/www/html
-p : Направление порта контейнера к хосту, например: -p 8080:80
Более команды действия
# docker images Список всех местных изображений # docker search centos Поиск изображений в стандартном хранилище镜像 ИМЯ ОПИСАНИЕ ЗВЕЗДЫ ОФИЦИАЛЬНОЕ АВТОМАТИЗИРОВАННОЕ centos Официальная версия CentOS. 2767 [OK] ansible/centos7-ansible Ansible на Centos7 90 [OK] jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK] nimmis/java-centos Это образы Docker CentOS 7 с различными... 17 [OK] consol/centos-xfce-vnc Контейнер CentOS с "бесшовным" VNC сессией... 14 [OK] #docker pull centos Загрузка образа в локальную систему #docker create -it ubuntu:latest Создание контейнера Невозможно найти образ 'ubuntu:latest' локально latest: Загружается из ubuntu 58488e45273c: Загрузка завершена 25810b66099e: Загрузка завершена 6571ba684f54: Загрузка завершена 6ed49a73d8f0: Загрузка завершена c53777cbfc31: Загрузка завершена 56465e1e45d2: Загрузка завершена Дайджест: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420 Статус: Загружена более новая версия образа ubuntu:latest 1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190 Кон容ер, созданный командой docker create, находится в состоянии остановки и требует запуска с помощью docker start # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1330233e50ab ubuntu:latest "/bin/bash" Около минуты назад happy_engelbart Команда docker run эквивалентна выполнению команды docker create, а затем docker start # docker run ubuntu /bin/echo "hello world" hello world
Войти в контейнер
Метод один:
# docker attach a54615a88787, за которым следует имя контейнера или идентификатор, после выхода из контейнера docker также будет退出,не часто используется
Метод два:
# docker exec -it a54615a88787 /bin/bash, за которым следует имя контейнера или идентификатор
Метод три:
yum -y install util-linux # docker inspect --format "{{.State.Pid}}" stupefied_cray в конце указывается имя контейнера 4899 # nsenter --target 4899 --mount --uts --ipc --net --pid
Скрипт
#!/bin/bash CNAME=$1 CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME) nsenter --target $CPID --mount --uts --ipc --net –pid
Ниже приведены базовые команды Docker,介绍的Docker基础命令详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, автоматически загружен, сайт не имеет права собственности, не прошел редактирование и не несет ответственности за связанные с этим юридические последствия. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. Если информация подтвердится, сайт незамедлительно удалил涉嫌侵权的内容。