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

Вступление

Docker - это приложение, которое позволяет легко и просто запускать процессы приложений в контейнере, которые похожи на виртуальные машины, только более переносимы, более дружественны к ресурсам и в большей степени зависят от операционной системы хоста. Чтобы получить подробное представление о различных компонентах контейнера Docker, посмотритеThe Docker Ecosystem: An Introduction to Common Components.

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

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

Предпосылки

  • 64-битная CentOS 7 Droplet

  • Пользователь без полномочий root с привилегиями sudo. Сервер CentOS 7, настроенный с использованиемInitial Setup Guide for CentOS 7, объясняет, как это настроить.

[.note] #Note: Docker требует 64-битной версии CentOS 7, а также ядра версии 3.10 или выше. По умолчанию 64-битная капля CentOS 7 соответствует этим требованиям.
#

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

[[step-1 -—- install-docker]] == Шаг 1. Установка Docker

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

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

sudo yum check-update

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

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

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

sudo systemctl start docker

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

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)

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

sudo systemctl enable docker

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

[[step-2 -—- execute-docker-command-without-sudo-optional]] == Шаг 2 - Выполнение команды Docker без Sudo (необязательно)

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

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

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

sudo usermod -aG docker $(whoami)

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

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

sudo usermod -aG docker username

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

[[step-3 -—- using-the-docker-command]] == Шаг 3. Использование команды Docker

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

docker [option] [command] [arguments]

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

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

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

docker docker-subcommand --help

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

docker info

[[step-4 -—- working-with-docker-images]] == Шаг 4. Работа с образами Docker

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

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

docker run hello-world

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

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

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

docker search centos

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

OutputNAME                            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]

...

В столбцеOFFICIALOK указывает изображение, созданное и поддерживаемое компанией, стоящей за проектом. После того, как вы определили изображение, которое хотели бы использовать, вы можете загрузить его на свой компьютер с помощью подкомандыpull, например:

docker pull centos

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

docker run centos

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

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

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

[[step-5 -—- running-a-docker-container]] == Шаг 5. Запуск контейнера Docker

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

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

docker run -it centos

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

Output[root@59839a1b7de2 /]#

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

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

yum install mariadb-server

[[step-6 -—- committing-changes-in-a-container-to-a-docker-image]] == Шаг 6. Фиксация изменений в контейнере в образе Docker

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

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

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

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

exit

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

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

Например:

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

[.note] #Note: Когда выcommit изображение, новое изображение сохраняется локально, то есть на вашем компьютере. Позже в этом руководстве вы узнаете, как отправить образ в реестр Docker, например в Docker Hub, чтобы его могли оценить и использовать вы и другие пользователи.
#

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

docker images

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

OutputREPOSITORY             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. Но это очень сложный процесс, который выходит за рамки этой статьи. Мы рассмотрим это в следующей статье.

[[step-7 -—- листинг-докер-контейнеров]] == Шаг 7. Составление списка контейнеров докера

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

docker ps

Вы увидите вывод, похожий на следующий:

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

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

docker ps -a

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

docker ps -l

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

docker stop container-id

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

[[step-8 -—- pushing-docker-images-to-a-docker-repository]] == Шаг 8. Отправка образов Docker в репозиторий Docker

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

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

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

docker login -u docker-registry-username

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

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

Завершение займет некоторое время, и когда будет завершено, результат будет такого рода:

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

...

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

Docker image listing on Docker Hub

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

OutputThe 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 основан на быстро развивающейся кодовой базе, поэтому возьмите за привычку посещатьblog page проекта для получения последней информации.

Также проверьтеother Docker tutorials в сообществе DO.

Related