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

Подробное описание базовых команд Docker

Основные концепции 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 (при отправке письма замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. Если информация подтвердится, сайт незамедлительно удалил涉嫌侵权的内容。

Рекомендуется для просмотра