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

12 set 2022 6 min di lettura
Как установить и использовать Docker в CentOS 8 Linux
Indice dei contenuti

Введение

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

В этом руководстве мы увидим, как установить Docker CE на CentOS 8, и изучим основные концепции и команды Docker.

Предпосылки

Прежде чем продолжить работу с этим учебным пособием, убедитесь, что выполнены следующие предварительные условия:

Если вы хотите установить Docker на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

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

ssh root@IP_DEL_SERVER

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

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

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

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Установите Докер на CentOS

Хотя пакет Docker доступен в официальном репозитории CentOS 8, он не всегда может быть последней версией. Рекомендуемый подход — установить Docker из репозиториев Docker.

Чтобы установить Docker на ваш сервер CentOS 8, сделайте следующее:

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

sudo yum update
sudo yum install yum-utils device-mapper-persistent-data lvm2

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

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Теперь, когда репозиторий Docker включен, установите последнюю версию Docker CE (Community Edition) с помощью yum, набрав:

sudo yum install docker-ce

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

CentOS-8 - AppStream 113 kB/s | 4.3 kB 00:00
 CentOS-8 - Base 12 kB/s | 3.9 kB 00:00
 CentOS-8 - Extras 49 kB/s | 1.5 kB 00:00
 Docker CE Stable - x86_64 201 kB/s | 21 kB 00:00
 Error:
 Problem: package docker-ce-3:19.03.5-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
 - cannot install the best candidate for the job
 - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
 - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
 - package containerd.io-1.2.2-3.el7.x86_64 is excluded
 - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
 - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
 - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
 (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

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

sudo yum -y install docker-ce --nobest

После установки пакета Docker запустите демон Docker и включите его автоматический запуск при запуске:

sudo systemctl start docker
sudo systemctl enable docker

Чтобы убедиться, что служба Docker запущена, введите:

sudo systemctl status docker

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

● docker.service - Docker Application Container Engine
 Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
 Active: active (running) since Wed 2020-01-15 00:06:26 CET; 4s ago
 Docs: https://docs.docker.com
 Main PID: 11075 (dockerd)
 Tasks: 18
 Memory: 51.6M
 CGroup: /system.slice/docker.service
 ├─11075 /usr/bin/dockerd -H fd://└─11091 containerd --config /var/run/docker/containerd/containerd.toml --log-level info

На момент написания этой статьи текущая стабильная версия Docker — 19.03.5, для печати типа версии Docker:

docker -v
Docker version 19.03.5, build 633a0ea

Запустите команду Docker без Sudo

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

sudo usermod -aG docker $USER

$USER — это переменная среды, которая содержит ваше имя пользователя.

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

Чтобы убедиться, что Docker установлен правильно и что вы можете запускать команды docker без sudo, введите следующую команду, которая загрузит тестовый образ, запустит его в контейнере, напечатает сообщение «Hello from Docker» и завершит работу:

docker container run hello-world

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

Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world
 1b930d010525: Pull complete
 Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
 Status: Downloaded newer image for hello-world:latest

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

Интерфейс командной строки Docker

Теперь, когда у нас есть работающая установка Docker, давайте перейдем к базовому синтаксису Docker CLI.

Командная строка докера имеет следующий вид:

docker [option] [subcommand] [arguments]

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

docker

Если вам нужна дополнительная помощь по какой-либо [subcommand], просто введите:

docker [subcommand] --help

Докер-образы

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

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

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

docker search centos

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

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
 centos The official build of CentOS. 5770 [OK]
 ansible/centos7-ansible Ansible on Centos7 126 [OK]
 jdeathe/centos-ssh OpenSSH /Supervisor /EPEL/IUS/SCL Repos - … 114 [OK]
 consol/centos-xfce-vnc Centos container with "headless" VNC session… 108 [OK]
 centos/mysql-57-centos7 MySQL 5.7 SQL database server 67
 imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 57 [OK]
 tutum/centos Simple CentOS docker image with SSH access 44
 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 39
 kinogmt/centos-ssh CentOS with SSH 29 [OK]
 pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10
 guyton/centos6 From official centos6 container with full up… 9 [OK]
 nathonfowlie/centos-jre Latest CentOS image with the JRE pre-install… 8 [OK]
 drecom/centos-ruby centos ruby 6 [OK]....

Как видите, результаты поиска выводят таблицу с пятью столбцами: NAME, DESCRIPTION, STARS, OFFICIAL и AUTOMATED. Официальный образ — это образ, который Docker разрабатывает в сотрудничестве с партнерами.

Если мы хотим загрузить официальную сборку CentOS 8, мы можем сделать это с помощью подкоманды image pull:

docker image pull centos
Using default tag: latest
 latest: Pulling from library/centos
 729ec3a6ada3: Pull complete
 Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
 Status: Downloaded newer image for centos:latest
 docker.io/library/centos:latest

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

docker image ls

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

REPOSITORY TAG IMAGE ID CREATED SIZE
 centos latest 0f3e07c0138f 3 months ago 220MB
 hello-world latest fce289e99eb9 12 months ago 1.84kB

Если по какой-то причине вы хотите удалить изображение, вы можете сделать это с помощью подкоманды image rm [image_name]:

docker image rm centos
Untagged: centos:latest
 Untagged: centos@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
 Deleted: sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da
 Deleted: sha256:9e607bb861a7d58bece26dd2c02874beedd6a097c1b6eca5255d5eb0d2236983

Докер-контейнеры

Экземпляр изображения называется контейнером. Контейнер представляет собой среду выполнения для одного приложения, процесса или службы.

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

Мы можем запускать, останавливать, удалять и управлять контейнером с помощью подкоманды docker container.

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

docker container run centos

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

Опция -it позволяет нам взаимодействовать с контейнером через командную строку. Чтобы запустить тип интерактивного контейнера:

docker container run -it centos /bin/bash

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

[root@31256e550edc /]#

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

docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 1d11ac462fb5 centos "/bin/bash" 6 seconds ago Up 5 seconds angry_volhard

Если у вас нет запущенных контейнеров, вывод будет пустым.

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

docker container ls -a

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

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 1d11ac462fb5 centos "/bin/bash" 19 seconds ago Up 19 seconds angry_volhard
 31256e550edc centos "/bin/bash" 41 seconds ago Exited (127) 27 seconds ago epic_hypatia
 df0b941a0a14 centos "/bin/bash" 52 seconds ago Exited (0) 51 seconds ago nostalgic_goldwasser
 34912fcfaf8e hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago stupefied_rosalind

Чтобы удалить один или несколько контейнеров, просто скопируйте идентификатор контейнера (или идентификаторы) и вставьте их после подкоманды container rm, например:

docker container rm 34912fcfaf8e

Вывод

Вы узнали, как установить Docker на сервер CentOS 8, а также как загружать образы Docker и управлять контейнерами Docker. Вы также можете прочитать о Docker Compose, который позволяет вам определять и запускать многоконтейнерные приложения Docker.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.