Установка Docker на Oracle Linux
Контейнеризация – это упрошенная форма виртуализации на уровне операционной системы. В данном посте описано понятие виртуализации. Контейнеризация позволяет запускать приложение в изолированной области, называемой контейнером. Каждый контейнер содержит все необходимые компоненты для запуска приложения. Контейнер представляет собой исполняемый пакет программного обеспечения, работающий поверх операционной системы. Одним из наиболее популярных инструментов управления виртуальными контейнерами является Docker. Он решает множество задач, связанных с созданием контейнеров, размещением в них приложений, управлением процессами, а также тестированием программного обеспечения и его отдельных компонентов.
Далее рассматривается установка Docker в среде Linux (дистрибутив Oracle Linux 7). Для этого, необходимо выполнить следующие шаги:
1. Настроить открытый консольный менеджер пакетов yum в дистрибутиве Oracle Linux.
Необходимо включить репозитории ol7_latest, ol7_uekr4, ol7_optional_latest и ol7_addons. Для этого надо в директорию /etc/yum.repos.d/ скачать файл репозитория public-yum-ol7.repo. Делается это следующими командами под пользователем root (операционная система должна иметь доступ к интернету):
[root@dushanbe ~]# cd /etc/yum.repos.d/ [root@dushanbe yum.repos.d]# [root@dushanbe yum.repos.d]# wget http://yum.oracle.com/public-yum-ol7.repo --2021-04-13 10:20:25-- http://yum.oracle.com/public-yum-ol7.repo Resolving yum.oracle.com (yum.oracle.com)… 184.86.49.9 Connecting to yum.oracle.com (yum.oracle.com)|184.86.49.9|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 16402 (16K) [text/plain] Saving to: ‘public-yum-ol7.repo.1’ 100%[=============================================>] 16,402 22.1KB/s in 0.7s 2021-04-13 10:20:32 (22.1 KB/s) - ‘public-yum-ol7.repo.1’ saved [16402/16402] [root@dushanbe yum.repos.d]#
Хотелось бы коротко написать, что репозитории это сервера в интернете или в локальной сети, которые настроены для хранения и предоставления доступа к файлам пакетов приложений Linux. Другими словами, пользователи из репозиторий могут скачать или обновить свои приложения для Linux.
Проверяется файл public-yum-ol7.repo на наличие блоков ol7_latest, ol7_uekr4, ol7_optional_latest и ol7_addons. В случае отсутствия, необходимо добавить нижеследующие строки в файл public-yum-ol7.repo. Надо убедиться, что значение для параметра enabled равняется 1.
[root@dushanbe yum.repos.d]# ls -l total 28 -rw-r--r--. 1 root root 6282 Aug 2 2017 public-yum-ol7.repo -rw-r--r--. 1 root root 16402 Aug 26 2019 public-yum-ol7.repo.1 [root@dushanbe yum.repos.d]# vi public-yum-ol7.repo [ol7_latest] name=Oracle Linux $releasever Latest ($basearch) baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1 [ol7_UEKR4] name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch) baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1 [ol7_optional_latest] name=Oracle Linux $releasever Optional Latest ($basearch) baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/optional/latest/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1 [ol7_addons] name=Oracle Linux $releasever Add ons ($basearch) baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/addons/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1
После того, как репозитории настроены, необходимо перезагрузить операционную систему.
2. Запускается установка docker под пользователем root.
[root@dushanbe ~]# yum install docker-engine Loaded plugins: langpacks, ulninfo ol7_UEKR4 | 2.5 kB 00:00:00 ol7_addons | 2.5 kB 00:00:00 ol7_latest | 2.7 kB 00:00:00 ol7_optional_latest | 2.5 kB 00:00:00 (1/4): ol7_addons/x86_64/primary_db | 171 kB 00:00:05 (2/4): ol7_addons/x86_64/updateinfo | 95 kB 00:00:09 (3/4): ol7_optional_latest/x86_64/updateinfo | 1.2 MB 00:00:16 (4/4): ol7_optional_latest/x86_64/primary_db | 5.9 MB 00:00:31 Resolving Dependencies --> Running transaction check ---> Package docker-engine.x86_64 0:19.03.11.ol-8.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.77 for package: docker-engine-19.03.11.ol-8.el7.x86_64 --> Processing Dependency: containerd for package: docker-engine-19.03.11.ol-8.el7.x86_64 --> Processing Dependency: runc for package: docker-engine-19.03.11.ol-8.el7.x86_64 --> Processing Dependency: docker-cli for package: docker-engine-19.03.11.ol-8.el7.x86_64 --> Running transaction check ---> Package container-selinux.noarch 2:2.107-3.el7 will be installed --> Processing Dependency: selinux-policy-base >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch --> Processing Dependency: selinux-policy >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch --> Processing Dependency: selinux-policy-targeted >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch ---> Package containerd.x86_64 0:1.3.9-2.el7 will be installed ---> Package docker-cli.x86_64 0:19.03.11.ol-8.el7 will be installed ---> Package runc.x86_64 0:1.0.0-93.rc93.el7 will be installed --> Processing Dependency: criu for package: runc-1.0.0-93.rc93.el7.x86_64 --> Running transaction check ---> Package criu.x86_64 0:3.12-2.el7 will be installed --> Processing Dependency: libprotobuf-c.so.1(LIBPROTOBUF_C_1.0.0)(64bit) for package: criu-3.12-2.el7.x86_64 --> Processing Dependency: libnet.so.1()(64bit) for package: criu-3.12-2.el7.x86_64 --> Processing Dependency: libprotobuf-c.so.1()(64bit) for package: criu-3.12-2.el7.x86_64 ---> Package selinux-policy.noarch 0:3.13.1-166.0.2.el7 will be updated ---> Package selinux-policy.noarch 0:3.13.1-268.0.1.el7_9.2 will be an update --> Processing Dependency: policycoreutils >= 2.5-24 for package: selinux-policy-3.13.1-268.0.1.el7_9.2.noarch --> Processing Dependency: libsemanage >= 2.5-13 for package: selinux-policy-3.13.1-268.0.1.el7_9.2.noarch ---> Package selinux-policy-targeted.noarch 0:3.13.1-166.0.2.el7 will be updated ---> Package selinux-policy-targeted.noarch 0:3.13.1-268.0.1.el7_9.2 will be an update --> Running transaction check ---> Package libnet.x86_64 0:1.1.6-7.el7 will be installed ---> Package libsemanage.x86_64 0:2.5-8.el7 will be updated --> Processing Dependency: libsemanage = 2.5-8.el7 for package: libsemanage-python-2.5-8.el7.x86_64 ---> Package libsemanage.x86_64 0:2.5-14.el7 will be an update --> Processing Dependency: libselinux >= 2.5-14 for package: libsemanage-2.5-14.el7.x86_64 --> Processing Dependency: libsepol >= 2.5-10 for package: libsemanage-2.5-14.el7.x86_64 ---> Package policycoreutils.x86_64 0:2.5-17.1.0.1.el7 will be updated --> Processing Dependency: policycoreutils = 2.5-17.1.0.1.el7 for package: policycoreutils-python-2.5-17.1.0.1.el7.x86_64 ---> Package policycoreutils.x86_64 0:2.5-34.0.1.el7 will be an update --> Processing Dependency: libselinux-utils >= 2.5-14 for package: policycoreutils-2.5-34.0.1.el7.x86_64 ---> Package protobuf-c.x86_64 0:1.0.2-3.el7 will be installed --> Running transaction check ---> Package libselinux.x86_64 0:2.5-11.el7 will be updated --> Processing Dependency: libselinux(x86-64) = 2.5-11.el7 for package: libselinux-python-2.5-11.el7.x86_64 ---> Package libselinux.x86_64 0:2.5-15.el7 will be an update ---> Package libselinux-utils.x86_64 0:2.5-11.el7 will be updated ---> Package libselinux-utils.x86_64 0:2.5-15.el7 will be an update ---> Package libsemanage-python.x86_64 0:2.5-8.el7 will be updated ---> Package libsemanage-python.x86_64 0:2.5-14.el7 will be an update ---> Package libsepol.x86_64 0:2.5-6.el7 will be updated ---> Package libsepol.x86_64 0:2.5-10.el7 will be an update ---> Package policycoreutils-python.x86_64 0:2.5-17.1.0.1.el7 will be updated ---> Package policycoreutils-python.x86_64 0:2.5-34.0.1.el7 will be an update --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.0.1.el7.x86_64 --> Running transaction check ---> Package libselinux-python.x86_64 0:2.5-11.el7 will be updated ---> Package libselinux-python.x86_64 0:2.5-15.el7 will be an update ---> Package setools-libs.x86_64 0:3.3.8-1.1.el7 will be updated ---> Package setools-libs.x86_64 0:3.3.8-4.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved ======================================================================================= Package Arch Version Repository Size Installing: docker-engine x86_64 19.03.11.ol-8.el7 ol7_addons 21 M Installing for dependencies: container-selinux noarch 2:2.107-3.el7 ol7_addons 39 k containerd x86_64 1.3.9-2.el7 ol7_addons 27 M criu x86_64 3.12-2.el7 ol7_latest 452 k docker-cli x86_64 19.03.11.ol-8.el7 ol7_addons 34 M libnet x86_64 1.1.6-7.el7 ol7_latest 57 k protobuf-c x86_64 1.0.2-3.el7 ol7_latest 27 k runc x86_64 1.0.0-93.rc93.el7 ol7_addons 3.7 M Updating for dependencies: libselinux x86_64 2.5-15.el7 ol7_latest 162 k libselinux-python x86_64 2.5-15.el7 ol7_latest 235 k libselinux-utils x86_64 2.5-15.el7 ol7_latest 151 k libsemanage x86_64 2.5-14.el7 ol7_latest 150 k libsemanage-python x86_64 2.5-14.el7 ol7_latest 112 k libsepol x86_64 2.5-10.el7 ol7_latest 297 k policycoreutils x86_64 2.5-34.0.1.el7 ol7_latest 916 k policycoreutils-python x86_64 2.5-34.0.1.el7 ol7_latest 457 k selinux-policy noarch 3.13.1-268.0.1.el7_9.2 ol7_latest 498 k selinux-policy-targeted noarch 3.13.1-268.0.1.el7_9.2 ol7_latest 7.2 M setools-libs x86_64 3.3.8-4.el7 ol7_latest 620 k Transaction Summary ======================================================================================= Install 1 Package (+ 7 Dependent packages) Upgrade ( 11 Dependent packages) Total download size: 98 M Is this ok [y/d/N]:
Здесь надо подтвердить установку и обновление путем нажатия y
Is this ok [y/d/N]: y Downloading packages: No Presto metadata available for ol7_latest warning: /var/cache/yum/x86_64/7Server/ol7_addons/packages/container-selinux-2.107-3.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Public key for container-selinux-2.107-3.el7.noarch.rpm is not installed (1/19): container-selinux-2.107-3.el7.noarch.rpm | 39 kB 00:00:02 Public key for criu-3.12-2.el7.x86_64.rpm is not installed kB/s | 832 kB 00:06:47 ETA (2/19): criu-3.12-2.el7.x86_64.rpm | 452 kB 00:00:05 (3/19): containerd-1.3.9-2.el7.x86_64.rpm | 27 MB 00:04:10 (4/19): libselinux-2.5-15.el7.x86_64.rpm | 162 kB 00:00:03 (5/19): libnet-1.1.6-7.el7.x86_64.rpm | 57 kB 00:00:07 (6/19): libselinux-python-2.5-15.el7.x86_64.rpm | 235 kB 00:00:05 (7/19): libselinux-utils-2.5-15.el7.x86_64.rpm | 151 kB 00:00:03 (8/19): libsemanage-python-2.5-14.el7.x86_64.rpm | 112 kB 00:00:01 (9/19): libsemanage-2.5-14.el7.x86_64.rpm | 150 kB 00:00:05 (10/19): libsepol-2.5-10.el7.x86_64.rpm | 297 kB 00:00:06 (11/19): policycoreutils-python-2.5-34.0.1.el7.x86_64.rpm | 457 kB 00:00:10 (12/19): protobuf-c-1.0.2-3.el7.x86_64.rpm | 27 kB 00:00:02 (13/19): policycoreutils-2.5-34.0.1.el7.x86_64.rpm | 916 kB 00:00:21 (14/19): docker-cli-19.03.11.ol-8.el7.x86_64.rpm | 34 MB 00:06:17 (15/19): selinux-policy-3.13.1-268.0.1.el7_9.2.noarch.rpm | 498 kB 00:00:16 (16/19): setools-libs-3.3.8-4.el7.x86_64.rpm | 620 kB 00:00:11 (17/19): runc-1.0.0-93.rc93.el7.x86_64.rpm | 3.7 MB 00:00:53 (18/19): docker-engine-19.03.11.ol-8.el7.x86_64.rpm | 21 MB 00:03:32 (19/19): selinux-policy-targeted-3.13.1-268.0.1.el7_9.2.noarch. | 7.2 MB 00:01:30 --------------------------------------------------------------------------- Total 212 kB/s | 98 MB 07:50 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle Importing GPG key 0xEC551F03: Userid : "Oracle OSS group (Open Source Software group) build@oss.oracle.com" Fingerprint: 4214 4123 fecf c55b 9086 313d 72f9 7b74 ec55 1f03 Package : 7:oraclelinux-release-7.4-1.0.4.el7.x86_64 (@anaconda/7.4) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle Is this ok [y/N]:
Для установки необходимо нажатие y
Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Updating : libsepol-2.5-10.el7.x86_64 1/30 Updating : libselinux-2.5-15.el7.x86_64 2/30 Updating : libsemanage-2.5-14.el7.x86_64 3/30 Updating : libselinux-utils-2.5-15.el7.x86_64 4/30 Updating : policycoreutils-2.5-34.0.1.el7.x86_64 5/30 Updating : selinux-policy-3.13.1-268.0.1.el7_9.2.noarch 6/30 Updating : selinux-policy-targeted-3.13.1-268.0.1.el7_9.2.noarch 7/30 Updating : libsemanage-python-2.5-14.el7.x86_64 8/30 Updating : setools-libs-3.3.8-4.el7.x86_64 9/30 Updating : libselinux-python-2.5-15.el7.x86_64 10/30 Updating : policycoreutils-python-2.5-34.0.1.el7.x86_64 11/30 Installing : 2:container-selinux-2.107-3.el7.noarch 12/30 Installing : containerd-1.3.9-2.el7.x86_64 13/30 Installing : libnet-1.1.6-7.el7.x86_64 14/30 Installing : protobuf-c-1.0.2-3.el7.x86_64 15/30 Installing : criu-3.12-2.el7.x86_64 16/30 Installing : runc-1.0.0-93.rc93.el7.x86_64 17/30 Installing : docker-cli-19.03.11.ol-8.el7.x86_64 18/30 Installing : docker-engine-19.03.11.ol-8.el7.x86_64 19/30 Cleanup : policycoreutils-python-2.5-17.1.0.1.el7.x86_64 20/30 Cleanup : selinux-policy-targeted-3.13.1-166.0.2.el7.noarch 21/30 Cleanup : selinux-policy-3.13.1-166.0.2.el7.noarch 22/30 Cleanup : policycoreutils-2.5-17.1.0.1.el7.x86_64 23/30 Cleanup : libselinux-utils-2.5-11.el7.x86_64 24/30 Cleanup : setools-libs-3.3.8-1.1.el7.x86_64 25/30 Cleanup : libselinux-python-2.5-11.el7.x86_64 26/30 Cleanup : libsemanage-python-2.5-8.el7.x86_64 27/30 Cleanup : libsemanage-2.5-8.el7.x86_64 28/30 Cleanup : libselinux-2.5-11.el7.x86_64 29/30 Cleanup : libsepol-2.5-6.el7.x86_64 30/30 Verifying : docker-cli-19.03.11.ol-8.el7.x86_64 1/30 Verifying : libselinux-2.5-15.el7.x86_64 2/30 Verifying : 2:container-selinux-2.107-3.el7.noarch 3/30 Verifying : policycoreutils-2.5-34.0.1.el7.x86_64 4/30 Verifying : selinux-policy-3.13.1-268.0.1.el7_9.2.noarch 5/30 Verifying : policycoreutils-python-2.5-34.0.1.el7.x86_64 6/30 Verifying : docker-engine-19.03.11.ol-8.el7.x86_64 7/30 Verifying : libselinux-utils-2.5-15.el7.x86_64 8/30 Verifying : setools-libs-3.3.8-4.el7.x86_64 9/30 Verifying : protobuf-c-1.0.2-3.el7.x86_64 10/30 Verifying : libsemanage-python-2.5-14.el7.x86_64 11/30 Verifying : libsemanage-2.5-14.el7.x86_64 12/30 Verifying : libselinux-python-2.5-15.el7.x86_64 13/30 Verifying : libsepol-2.5-10.el7.x86_64 14/30 Verifying : criu-3.12-2.el7.x86_64 15/30 Verifying : libnet-1.1.6-7.el7.x86_64 16/30 Verifying : selinux-policy-targeted-3.13.1-268.0.1.el7_9.2.noarch 17/30 Verifying : containerd-1.3.9-2.el7.x86_64 18/30 Verifying : runc-1.0.0-93.rc93.el7.x86_64 19/30 Verifying : policycoreutils-python-2.5-17.1.0.1.el7.x86_64 20/30 Verifying : libselinux-2.5-11.el7.x86_64 21/30 Verifying : libsepol-2.5-6.el7.x86_64 22/30 Verifying : libselinux-utils-2.5-11.el7.x86_64 23/30 Verifying : policycoreutils-2.5-17.1.0.1.el7.x86_64 24/30 Verifying : libselinux-python-2.5-11.el7.x86_64 25/30 Verifying : libsemanage-python-2.5-8.el7.x86_64 26/30 Verifying : libsemanage-2.5-8.el7.x86_64 27/30 Verifying : selinux-policy-targeted-3.13.1-166.0.2.el7.noarch 28/30 Verifying : selinux-policy-3.13.1-166.0.2.el7.noarch 29/30 Verifying : setools-libs-3.3.8-1.1.el7.x86_64 30/30 Installed: docker-engine.x86_64 0:19.03.11.ol-8.el7 Dependency Installed: container-selinux.noarch 2:2.107-3.el7 containerd.x86_64 0:1.3.9-2.el7 criu.x86_64 0:3.12-2.el7 docker-cli.x86_64 0:19.03.11.ol-8.el7 libnet.x86_64 0:1.1.6-7.el7 protobuf-c.x86_64 0:1.0.2-3.el7 runc.x86_64 0:1.0.0-93.rc93.el7 Dependency Updated: libselinux.x86_64 0:2.5-15.el7 libselinux-python.x86_64 0:2.5-15.el7 libselinux-utils.x86_64 0:2.5-15.el7 libsemanage.x86_64 0:2.5-14.el7 libsemanage-python.x86_64 0:2.5-14.el7 libsepol.x86_64 0:2.5-10.el7 policycoreutils.x86_64 0:2.5-34.0.1.el7 policycoreutils-python.x86_64 0:2.5-34.0.1.el7 selinux-policy.noarch 0:3.13.1-268.0.1.el7_9.2 selinux-policy-targeted.noarch 0:3.13.1-268.0.1.el7_9.2 setools-libs.x86_64 0:3.3.8-4.el7 Complete! [root@dushanbe ~]#
Лог установки показывает, что установка Docker успешно завершена (Complete!).
3. После успешного завершения установки надо запустить сервис docker.
[root@dushanbe ~]# systemctl start docker [root@dushanbe ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [root@dushanbe ~]# [root@dushanbe ~]# 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 Tue 2021-04-13 11:01:02 +05; 52s ago Docs: https://docs.docker.com Main PID: 5592 (dockerd) CGroup: /system.slice/docker.service └─5592 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd…. Apr 13 11:01:01 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:01.0266…c Apr 13 11:01:01 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:01.0935…" Apr 13 11:01:01 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:01.0937…" Apr 13 11:01:01 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:01.5812…" Apr 13 11:01:01 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:01.9146…" Apr 13 11:01:02 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:02.0033…2 Apr 13 11:01:02 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:02.0037…l Apr 13 11:01:02 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:02.0040…" Apr 13 11:01:02 dushanbe.localdomain dockerd[5592]: time="2021-04-13T11:01:02.0720…" Apr 13 11:01:02 dushanbe.localdomain systemd[1]: Started Docker Application Contai…. Hint: Some lines were ellipsized, use -l to show in full. [root@dushanbe ~]#
Установка Docker завершена. Можно начать использовать Docker для создания новых контейнеров.