Как установить Docker на Ubuntu 18.04

Posted by

В данной заметке будут разобраны шаги как все же просто для начала установить Docker в систему Ubuntu Bionic Server amd64 с целью последующего использования. Ранее когда я хотел разобрать ну или иную настройку или работу в связке с другим сервисом мне приходило выполнять следующую последовательность шагов:

  • Установка операционной системы под Virtualbox
  • Установка сервиса
  • Преднастройка сервиса
  • Подготовка сервиса перед дальнейшими действиями кои и были задуманы.

Так вот уже довольно продолжительное время я часто вижу, что все вот это и многое другое можно упростить используя docker. Что это значит? А что что docker представляет из себя своего рода image (образа) внутри которых разворачивается среда идентичная натуральной которую я бы всеми шагами выше сделал бы под виртуальной системой, такой как Virtualbox, ESXi. А тут задействую docker я просто работая в основной системе загружаю подготовленный image (образ) и уже с ним в паре обкатываю настройки. Поведение image (образа) подчиняется файлу инструкции (Dockerfile), внутри которого располагаются необходимые команды для настройки окружения. Так же не стоит забывать, что вот такие вот image (образа) можно лишь загружать на основной системе где произведена установка самого Docker.

Т.е. я экономлю время и переключение с различных систем к системе. Вот так я вижу себе использование docker.

  • Таким образом тестирование/изучение/документирование шагов способствует формированию отрепетированных настроек для переноса в боевую эксплуатацию.
  • Когда image (образ) запущен это называется контейнером.
  • Но это пока первый набросок того, как все прочитанное по docker уложилось у меня в голове.

Сейчас я разберу пошаговые шаги по разворачиванию docker на хостовой системе Ubuntu Bionic Server (но также все справедливо и для Desktop редакции)

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

ekzorchik@srv-bionic:~$ sudo ./dproject/default

Системные требования:

  • Docker работает только на 64-битной архитектуре
  • Версия ядра должна быть выше или равно 3.10

ekzorchik@srv-bionic:~$ sudo apt-get install apt-transport-https ca-certificates curl -y

ekzorchik@srv-bionic:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

OK

ekzorchik@srv-bionic:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Следующая команда позволяет переключиться из репозитория Ubuntu 18.04 в репозиторий Docker:

ekzorchik@srv-bionic:~$ apt-cache search docker-ce

docker-ce-cli - Docker CLI: the open-source application container engine

docker-ce - Docker: the open-source application container engine

Ставлю самую последнюю версию пакета Docker:

ekzorchik@srv-bionic:~$ sudo apt-get install docker-ce -y

Проверяю, что сервис Docker запущен на системе:

ekzorchik@srv-bionic:~$ sudo systemctl status docker | head -n5

● docker.service - Docker Application Container Engine

Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

Active: active (running) since Fri 2019-02-08 16:42:39 MSK; 44s ago

Docs: https://docs.docker.com

Main PID: 30446 (dockerd)

Далее нужно поднастроить чтобы можно было управлять Docker не от имени суперпользователя:

ekzorchik@srv-bionic:~$ cat /etc/group | grep docker

docker:x:999:

ekzorchik@srv-bionic:~$ sudo usermod -aG docker ${USER}

ekzorchik@srv-bionic:~$ cat /etc/group | grep docker

docker:x:999:ekzorchik

Для принятия изменений два способа:

Способ №1:

ekzorchik@srv-bionic:~$ su - ${USER}

Password:

ekzorchik@srv-bionic:~$

Способ №2: Cделать Logoff/Logon

ekzorchik@srv-bionic:~$ id -nG

ekzorchik adm cdrom sudo dip plugdev lpadmin sambashare

ekzorchik@srv-bionic:~$ exit

logout

Connection to 172.33.33.40 closed.

ekzorchik@navy:~$ ssh -l ekzorchik 172.33.33.40

ekzorchik@172.33.33.40's password:

Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-43-generic x86_64)

* Documentation: https://help.ubuntu.com

* Management: https://landscape.canonical.com

* Support: https://ubuntu.com/advantage

Last login: Fri Feb 8 16:28:49 2019 from 172.33.33.7

ekzorchik@srv-bionic:~$ id -nG

ekzorchik adm cdrom sudo dip plugdev lpadmin sambashare docker

Как видно, теперь моя учетная запись в группе docker.

На заметку: На одной домашней системе под управлением Ubuntu 18.04 Desktop amd64 первый способ помог то делать так с каждой вкладкой консоли утомительно, сделал Logoff/Logon но как видно ниже не помогло

ekzorchik@navy:~$ cat /etc/group | grep docker

docker:x:999:ekzorchik

ekzorchik@navy:~$ docker images

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/json: dial unix /var/run/docker.sock: connect: permission denied

ekzorchik@navy:~$ sudo reboot — а потому просто перезагрузил систему и после все заработало.

Команда docker принимает ряд опций и команд с аргументами. Базовый синтаксис имеет такой вид:

docker [option] [command] [arguments]

Шаг №1: Отобразить системную информацию о Docker:

ekzorchik@srv-bionic:~$ docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 18.09.1

Storage Driver: overlay2

Backing Filesystem: extfs

Supports d_type: true

Native Overlay Diff: true

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: bridge host macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Init Binary: docker-init

containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce

runc version: 96ec2177ae841256168fcf76954f7177af9446eb

init version: fec3683

Security Options:

apparmor

seccomp

Profile: default

Kernel Version: 4.15.0-43-generic

Operating System: Ubuntu 18.04.1 LTS

OSType: linux

Architecture: x86_64

CPUs: 2

Total Memory: 1.947GiB

Name: srv-bionic

ID: RU4Y:V776:TRXX:NKNH:UQNC:EQF3:V3SO:QO4M:JPLH:2C6B:JEPX:66FZ

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

Labels:

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

Product License: Community Engine

WARNING: No swap limit support

Шаг №2: Проверяю что докер работает:

ekzorchik@srv-bionic:~$ docker -v

Docker version 18.09.1, build 4c52b90

Шаг №3: Проверяю, а смогу ли я получить доступ и загрузить образ из Docker Hub:

ekzorchik@srv-bionic:~$ docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

1b930d010525: Pull complete

Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535

Status: Downloaded newer image for hello-world:latest

Hello from Docker!

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

если в выводе есть эти две строки, то все прошло удачно

Hello from Docker!

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

Шаг №4: Отобразить список всех образов где встречается слово ubuntu:

ekzorchik@srv-bionic:~$ docker search ubuntu

Шаг №5: Загрузить образ с именем ubuntu на Ваш компьютер:

ekzorchik@srv-bionic:~$ docker pull ubuntu

Using default tag: latest

latest: Pulling from library/ubuntu

6cf436f81810: Pull complete

987088a85b96: Pull complete

b4624b3efe06: Pull complete

d42beb8ded59: Pull complete

Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210

Status: Downloaded newer image for ubuntu:latest

Шаг №6: Запустить образ с именем ubuntu на Вашем компьютере:

ekzorchik@srv-bionic:~$ docker run ubuntu

Шаг №7: Увидеть какие образа загружены на Вашем компьютере:

ekzorchik@srv-bionic:~$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

ubuntu latest 47b19964fb50 2 days ago 88.1MB

hello-world latest fce289e99eb9 5 weeks ago 1.84kB

Шаг №8: Запуск интерактивного контейнера:

ekzorchik@srv-bionic:~$ docker run -t -i ubuntu /bin/bash

root@374ff7d687db:/# pwd

/

root@374ff7d687db:/# uname -a

Linux 374ff7d687db 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

root@374ff7d687db:/# lsb_release -a

bash: lsb_release: command not found

root@374ff7d687db:/# w

13:54:46 up 26 min, 0 users, load average: 0.17, 0.17, 0.25

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

Шаг №9: Чтобы выйти из контейнера: exit или Ctrl+D

root@374ff7d687db:/# exit

exit

ekzorchik@srv-bionic:~$

Шаг №10: Отобразить список всех Контейнеров если не вышли из предыдущего шага и запущена еще одна консоль:

ekzorchik@srv-bionic:~$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

e4d631dc3496 ubuntu "/bin/bash" 4 seconds ago Up 3 seconds fervent_yonath

  • docker ps — Lists containers.
  • docker logs — Shows the standard output of a container.
  • docker stop — Stops running containers.

Шаг №11: Зная Контейнер ID выключаю запущенный контейнер:

ekzorchik@srv-bionic:~$ docker stop e4d631dc3496

e4d631dc3496

ekzorchik@srv-bionic:~$

ekzorchik@srv-bionic:~$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Пока это первый шаг по работе с Docker и он как я считаю успешно завершен, я разобрал для себя как установить Docker в систему Ubuntu Bionic Server amd64. Дальше будет интереснее. В мою приватную Wiki вынесены самолично разбираемые задачи, как создавать Dockerfile для сервисов, как управлять docker через Docker-Compose и много много другое. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.