В данной заметке будут разобраны шаги как все же просто для начала установить 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.