Поиск по сайту:

Как установить и использовать Docker на CentOS 7


Введение

Docker — это приложение, которое упрощает и упрощает запуск процессов приложений в контейнере, которые похожи на виртуальные машины, только более портативные, более ресурсоемкие и более зависимые от операционной системы хоста. Подробное знакомство с различными компонентами контейнера Docker см. в статье Экосистема Docker: введение в общие компоненты.

Существует два метода установки Docker в CentOS 7. Один метод включает его установку в существующей установке операционной системы. Другой включает запуск сервера с помощью инструмента Docker Machine, который автоматически устанавливает на него Docker.

В этом руководстве вы узнаете, как установить и использовать его в существующей установке CentOS 7.

Предпосылки

  • Дроплет CentOS 7 для 64-разрядной версии
  • Пользователь без полномочий root с привилегиями sudo. Сервер CentOS 7, настроенный с помощью руководства по начальной настройке CentOS 7, объясняет, как это настроить.

Примечание. Для Docker требуется 64-разрядная версия CentOS 7, а также версия ядра не ниже 3.10. 64-разрядная капля CentOS 7 по умолчанию соответствует этим требованиям.

Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для команды требуется root-доступ, ей будет предшествовать sudo. Руководство по начальной настройке CentOS 7 объясняет, как добавить пользователей и предоставить им доступ к sudo.

Шаг 1 — Установка Докера

Установочный пакет Docker, доступный в официальном репозитории CentOS 7, может быть не последней версии. Чтобы получить последнюю и лучшую версию, установите Docker из официального репозитория Docker. В этом разделе показано, как это сделать.

Но сначала давайте обновим базу данных пакетов:

  1. sudo yum check-update

Теперь запустите эту команду. Он добавит официальный репозиторий Docker, загрузит последнюю версию Docker и установит ее:

  1. curl -fsSL https://get.docker.com/ | sh

После завершения установки запустите демон Docker:

  1. sudo systemctl start docker

Убедитесь, что он работает:

  1. sudo systemctl status docker

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

Output
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago Docs: https://docs.docker.com Main PID: 749 (docker)

Наконец, убедитесь, что он запускается при каждой перезагрузке сервера:

  1. sudo systemctl enable docker

Установка Docker теперь дает вам не только службу Docker (демон), но и утилиту командной строки docker или клиент Docker. Позже в этом руководстве мы рассмотрим, как использовать команду docker.

Шаг 2 — Выполнение команды Docker без Sudo (необязательно)

По умолчанию для запуска команды docker требуются привилегии root, то есть вы должны добавить к команде префикс sudo. Его также может запустить пользователь из группы docker, которая автоматически создается при установке Docker. Если вы попытаетесь запустить команду docker без префикса sudo или не находясь в группе docker, вы получите такой вывод:

Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

Если вы не хотите вводить sudo при каждом запуске команды docker, добавьте свое имя пользователя в группу docker:

  1. sudo usermod -aG docker $(whoami)

Вам нужно будет выйти из Droplet и снова войти в систему как тот же пользователь, чтобы включить это изменение.

Если вам нужно добавить пользователя в группу docker, под которым вы не вошли в систему, объявите это имя пользователя явно, используя:

  1. sudo usermod -aG docker username

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

Шаг 3 — Использование команды Docker

Теперь, когда Docker установлен и работает, пора познакомиться с утилитой командной строки. Использование docker заключается в передаче цепочки опций и подкоманд, за которыми следуют аргументы. Синтаксис принимает такую форму:

  1. docker [option] [command] [arguments]

Чтобы просмотреть все доступные подкоманды, введите:

  1. docker

Начиная с Docker 1.11.1, полный список доступных подкоманд включает:

Output
attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container network Manage Docker networks pause Pause all processes within a container port List port mappings or a specific mapping for the CONTAINER ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart a container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop a running container tag Tag an image into a repository top Display the running processes of a container unpause Unpause all processes within a container update Update configuration of one or more containers version Show the Docker version information volume Manage Docker volumes wait Block until a container stops, then print its exit code

Чтобы просмотреть переключатели, доступные для определенной команды, введите:

  1. docker docker-subcommand --help

Для просмотра общесистемной информации используйте:

  1. docker info

Шаг 4 — Работа с образами Docker

Контейнеры Docker запускаются из образов Docker. По умолчанию он извлекает эти образы из Docker Hub, реестра Docker, которым управляет Docker, компания, стоящая за проектом Docker. Любой может создавать и размещать свои образы Docker в Docker Hub, поэтому большинство приложений и дистрибутивов Linux, которые вам понадобятся для запуска контейнеров Docker, имеют образы, размещенные в Docker Hub.

Чтобы проверить, можете ли вы получить доступ и загрузить образы из Docker Hub, введите:

  1. docker run hello-world

Вывод, который должен включать следующее, должен указывать на то, что Docker работает правильно:

Output
Hello from Docker. This message shows that your installation appears to be working correctly. ...

Вы можете искать изображения, доступные в Docker Hub, с помощью команды docker с подкомандой search. Например, чтобы найти образ CentOS, введите:

  1. docker search centos

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

Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 2224 [OK] jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 22 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 17 [OK] million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 11 [OK] nimmis/java-centos This is docker images of CentOS 7 with dif... 10 [OK] torusware/speedus-centos Always updated official CentOS docker imag... 8 [OK] nickistre/centos-lamp LAMP on centos setup 3 [OK] ...

В ОФИЦИАЛЬНОМ столбце OK указывает на образ, созданный и поддерживаемый компанией, стоящей за проектом. После того, как вы определили изображение, которое хотели бы использовать, вы можете загрузить его на свой компьютер с помощью подкоманды pull, например:

  1. docker pull centos

После загрузки образа вы можете запустить контейнер, используя загруженный образ с помощью подкоманды run. Если образ не был загружен при выполнении docker с подкомандой run, клиент Docker сначала загрузит образ, а затем запустит контейнер с его помощью:

  1. docker run centos

Чтобы просмотреть изображения, которые были загружены на ваш компьютер, введите:

  1. docker images

Вывод должен выглядеть примерно так:

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              778a53015523        5 weeks ago         196.7 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

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

Шаг 5 — Запуск контейнера Docker

Контейнер hello-world, который вы запустили на предыдущем шаге, является примером контейнера, который запускается и завершается после отправки тестового сообщения. Однако контейнеры могут быть гораздо полезнее, и они могут быть интерактивными. Ведь они похожи на виртуальные машины, только более ресурсоемкие.

В качестве примера запустим контейнер, используя последний образ CentOS. Комбинация ключей -i и -t обеспечивает интерактивный доступ оболочки к контейнеру:

  1. docker run -it centos

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

Output
[root@59839a1b7de2 /]#

Важно: обратите внимание на идентификатор контейнера в командной строке. В приведенном выше примере это 59839a1b7de2.

Теперь вы можете запустить любую команду внутри контейнера. Например, давайте установим сервер MariaDB в работающий контейнер. Нет необходимости ставить перед любой командой префикс sudo, потому что вы работаете внутри контейнера с привилегиями root:

  1. yum install mariadb-server

Шаг 6 — Передача изменений в контейнере в образ Docker

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

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

После установки сервера MariaDB внутри контейнера CentOS теперь у вас есть контейнер, работающий на основе образа, но контейнер отличается от образа, который вы использовали для его создания.

Чтобы сохранить состояние контейнера как новый образ, сначала выйдите из него:

  1. exit

Затем зафиксируйте изменения в новом экземпляре образа Docker с помощью следующей команды. Переключатель -m предназначен для сообщения фиксации, которое помогает вам и другим узнать, какие изменения вы внесли, а -a используется для указания автора. Идентификатор контейнера — это тот, который вы отметили ранее в руководстве, когда запускали интерактивный сеанс Docker. Если вы не создали дополнительные репозитории в Docker Hub, репозиторий обычно является вашим именем пользователя Docker Hub:

  1. docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

Например:

  1. docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

Примечание. Когда вы фиксируете изображение, новое изображение сохраняется локально, то есть на вашем компьютере. Далее в этом руководстве вы узнаете, как отправить образ в реестр Docker, такой как Docker Hub, чтобы его могли оценить и использовать вы и другие лица.

После завершения этой операции в списке образов Docker, которые сейчас находятся на вашем компьютере, должен отображаться новый образ, а также старый, из которого он был получен:

  1. docker images

Вывод должен быть такого вида:

Output
REPOSITORY TAG IMAGE ID CREATED SIZE finid/centos-mariadb latest 23390430ec73 6 seconds ago 424.6 MB centos latest 778a53015523 5 weeks ago 196.7 MB hello-world latest 94df4f0ce8a4 2 weeks ago 967 B

В приведенном выше примере centos-mariadb — это новый образ, созданный на основе существующего образа CentOS из Docker Hub. Разница в размерах отражает внесенные изменения. И в этом примере изменение заключалось в том, что был установлен сервер MariaDB. Поэтому в следующий раз, когда вам понадобится запустить контейнер с помощью CentOS с предустановленным сервером MariaDB, вы можете просто использовать новый образ. Образы также могут быть созданы из так называемого Dockerfile. Но это очень сложный процесс, который выходит за рамки данной статьи. Мы рассмотрим это в следующей статье.

Шаг 7 — Список контейнеров Docker

После некоторого использования Docker у вас на компьютере будет много активных (работающих) и неактивных контейнеров. Для просмотра активных используйте:

  1. docker ps

Вы увидите вывод, подобный следующему:

Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7c79cc556dd centos "/bin/bash" 3 hours ago Up 3 hours silly_spence

Чтобы просмотреть все контейнеры — активные и неактивные, передайте ему ключ -a:

  1. docker ps -a

Чтобы просмотреть последний созданный вами контейнер, передайте ему ключ -l:

  1. docker ps -l

Остановить работающий или активный контейнер так же просто, как ввести:

  1. docker stop container-id

container-id можно найти в выводе команды docker ps.

Шаг 8 — Отправка образов Docker в репозиторий Docker

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

В этом разделе показано, как отправить образ Docker в Docker Hub.

Чтобы создать учетную запись в Docker Hub, зарегистрируйтесь в Docker Hub. После этого, чтобы отправить образ, сначала войдите в Docker Hub. Вам будет предложено пройти аутентификацию:

  1. docker login -u docker-registry-username

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

  1. docker push docker-registry-username/docker-image-name

Это займет некоторое время, и по завершении вывод будет такого рода:

Output
The push refers to a repository [docker.io/finid/centos-mariadb] 670194edfaf5: Pushed 5f70bf18a086: Mounted from library/centos 6a6c96337be1: Mounted from library/centos ...

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

Если попытка отправки приводит к ошибке такого рода, то вы, вероятно, не вошли в систему:

Output
The push refers to a repository [docker.io/finid/centos-mariadb] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

Войдите в систему, затем повторите попытку отправки.

Заключение

Docker — это гораздо больше, чем было дано в этой статье, но этого должно быть достаточно, чтобы вы начали работать с ним в CentOS 7. Как и большинство проектов с открытым исходным кодом, Docker построен на основе быстро развивающейся кодовой базы, поэтому сделайте привычка посещать страницу блога проекта для получения последней информации.

Также ознакомьтесь с другими руководствами по Docker в сообществе DO.