Тематические термины: Docker, Linux.
Docker позволяет не только загружать и использовать готовые контейнеры, но создавать свои. В данной инструкции мы пошагово разберем установку Docker на Linux, создание собственного образа и загрузку его на Docker Hub.
Рассмотрим примеры установки на базе операционных систем Red Hat/CentOS и Debian/Ubuntu.
Устанавливаем репозиторий — для этого загружаем файл с настройками репозитория:
wget https://download.docker.com/linux/centos/docker-ce.repo
* если система вернет ошибку, устанавливаем wget командой yum install wget.
… и переносим его в каталог yum.repos.d:
mv docker-ce.repo /etc/yum.repos.d/
Устанавливаем docker:
yum install docker-ce docker-ce-cli containerd.io
Если система вернет ошибку Необходимо: container-selinux >= …, переходим на страницу пакетов CentOS, находим нужную версию container-selinux и копируем на него ссылку:
… с помощью данной ссылки выполняем установку:
yum install http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.99-1.el7_6.noarch.rpm
После повторяем команду на установку докера:
В deb-системе ставится командой:
apt-get install docker docker.io
Разрешаем запуск сервиса docker:
systemctl enable docker
… и запускаем его:
systemctl start docker
После проверяем:
docker run hello-world
… мы должны увидеть:
…Hello from Docker!This message shows that your installation appears to be working correctly.…
Сборка начинается с создания файла Dockerfile — он содержит инструкции того, что должно быть в контейнере. В качестве примера, соберем свой веб-сервер nginx.
И так, чтобы создать свой образ с нуля, создаем каталог для размещения Dockerfile:
mkdir -p /opt/docker/mynginx
* где /opt/docker/mynginx — полный путь до каталога, где будем создавать образ.
… переходим в данный каталог:
cd /opt/docker/mynginx
… и создаем Dockerfile:
vi Dockerfile
FROM centos:7MAINTAINER Dmitriy Mosk <[email protected]>RUN yum install -y epel-release && yum install -y nginxRUN yum clean allRUN echo “daemon off;” >> /etc/nginx/nginx.confRUN sed -i “0,/nginx/s/nginx/docker-nginx/i” /usr/share/nginx/html/index.htmlCMD [ “nginx” ]
* в данном файле мы:
* подробное описание инструкций Dockerfile смотрите ниже.
Запускаем сборку:
docker build -t admins24/nginx:v1 .
* где admins24 — имя автора; nginx — название для сборки; v1 — тег с указанием версии. Точка на конце указывает, что поиск Dockerfile выполняем в текущей директории.
… начнется процесс сборки образа — после его завершения мы должны увидеть что-то на подобие:
Successfully built eae801eaeff2Successfully tagged admins24/nginx:v1
Посмотреть список образов можно командой:
docker images
Создаем и запускаем контейнер из образа:
docker run -d -p 8080:80 admins24/nginx:v1
* в данном примере мы запустим контейнер из образа admins24/nginx:v1 и укажем, что необходимо опубликовать внешний порт 8080, который будет перенаправлять трафик на порт 80 внутри контейнера.
Открываем браузер и переходим по адресу http://<IP-адрес нашего докера>:8080 — мы должны увидеть страницу приветствия с нашим docker-nginx:
Посмотреть созданные контейнеры можно командой:
docker ps -a
Запустить или остановить контейнеры можно командами:
docker stop 5fe78aca2e1d
docker start 5fe78aca2e1d
* где 5fe78aca2e1d — идентификатор контейнера.
В примере выше мы рассмотрели создание нового образа с нуля. Также, мы можем взять любой другой образ, отредактировать его и сохранить под своим названием.
Скачаем образ операционной системы CentOS:
docker pull centos:latest
Войдем в скачанный образ для его изменения:
docker run -t -i centos:latest /bin/bash
Внесем небольшие изменения, например, создадим учетную запись:
[[email protected] /]# useradd admins24 -G wheel -m
[[email protected] /]# passwd admins24
[[email protected] /]# exit
* в данном примере мы создали пользователя admins24 и задали ему пароль.
Коммитим образ:
docker commit -m “Add user admins24” -a “Dmitry Mosk” 8f07ef93918f centos:my
* где -m — параметр для указания комментария; -a — указывает автора; 8f07ef93918f — идентификатор контейнера, который был нами изменен (его можно было увидеть в приглашении командной строки); centos:my — название нашего нового образа.
Новый образ создан.
Заходим на Docker Hub страницу регистрации. Создаем пользователя:
На следующей странице также заполняем данные профиля. После переходим в почтовый ящик, который был указан при регистрации и переходим по ссылке Confirm Your Email With Docker для подтверждения регистрации. Регистрация закончена.
Переходим на страницу Repositories и создаем свой репозиторий, например, admins24. Теперь можно загрузить наши образы в репозиторий.
Сначала авторизуемся в Linux под нашим зарегистрированным пользователем:
docker login –username admins24
Задаем тег для одного из образов и загружаем его в репозиторий:
docker tag centos:my admins24/admins24:centos
docker push admins24/admins24:centos
Загрузим второй образ:
docker tag admins24/nginx:v1 admins24/admins24:nginx
docker push admins24/admins24:nginx
В Docker Hub должны появиться наш образы:
Чтобы воспользоваться образом на другом компьютере, также авторизуемся под зарегистрированным пользователем docker:
Загружаем образ:
docker pull admins24/admins24:nginx
Запускаем его:
docker run -d -p 8080:80 admins24/admins24:nginx
Созданный нами контейнер можно сохранить в виде архива и, при необходимости, перенести на другой сервер или оставить как бэкап.
И так, для создания резервной копии контейнера, смотрим их список:
… и для нужного выполняем команду:
docker save -o /backup/docker/container.tar <container image>
* в данном примере мы создаем архив контейнера <container image> в файл /backup/docker/container.tar.
Чтобы уменьшить размер, занимаемый созданным файлом, раархивиркем его командой:
gzip /backup/docker/container.tar
* в итоге, мы получим файл container.tar.gz.
Сначала распаковываем архив:
gunzip container.tar.gz
После восстанавливаем контейнер:
docker load -i container.tar
Смотрим, что нужный нам контейнер появился:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies