Користувальницькькі налаштування

Налаштування сайту


docker

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

docker [2017/06/04 08:41] (поточний)
wombat створено
Рядок 1: Рядок 1:
 +====== Docker ======
 +
 +
 +===== Образи Docker =====
 +
 +Існує дуже багато готових до використання образів Docker. Переглянути список офіційних образів можна на сайті https://​hub.docker.com/​explore/​
 +
 +===== Використання =====
 +
 +Під час роботи Docker створюватиме багато різних тимчасових та постійних файлів. За замовчуванням він використовує для цього каталог ''/​var/​lib/​docker'',​ але якщо ви бажаєте змінити його на інший каталог,​ це можна зробити наступним чином((https://​stackoverflow.com/​a/​30219552)):​
 +
 +Створити каталог ''/​etc/​systemd/​system/​docker.service.d''​. Далі створити в цьому каталозі файл із назвою,​ наприклад,​ ''​custom-graph.conf''​ такого змісту:​
 +
 +<file bash "​custom-graph.conf">​
 +[Service]
 +ExecStart=
 +ExecStart=/​usr/​bin/​dockerd --graph="/​home/​dockerdata"​ -H fd://
 +</​file>​
 +
 +Після цього потрібно оновити конфігурацію systemd:
 +
 +  sudo systemctl daemon-reload
 +
 +та запустити службу Docker:
 +
 +  sudo systemctl restart docker
 +
 +Якщо під час використання Docker з'​являється повідомлення на кшталт
 +
 +  FATA[0000] Get http:///​var/​run/​docker.sock/​v1.16/​version:​
 +    dial unix /​var/​run/​docker.sock:​ no such file or directory.
 +    Are you trying to connect to a TLS-enabled daemon without TLS?
 +
 +часто це означає,​ що ваш користувач не входить до групи docker. Додамо його туди:
 +
 +  sudo usermod -a -G docker $USERNAME
 +
 +==== Debian 8 ====
 +
 +В репозиторії Debian 8 "​Jessie"​ міститься пакет Docker під назвою [[https://​packages.debian.org/​jessie-backports/​docker.io | "​docker.io"​]]. Але ця версія Docker не підтримує багаторівневу адресу репозиторію. Тому варто встановити цей пакет з [[https://​store.docker.com/​editions/​community/​docker-ce-server-debian | офіційного сайту Docker]]. Згідно офіційного сайту, для цього потрібно зробити наступне:​
 +
 +  sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
 +  curl -fsSL https://​download.docker.com/​linux/​debian/​gpg | sudo apt-key add -
 +  sudo add-apt-repository "deb [arch=amd64] https://​download.docker.com/​linux/​debian $(lsb_release -cs) stable"​
 +  sudo apt-get update
 +  sudo apt-get install docker-ce
 +
 +
 +====== Gitlab CI ======
 +
 +В межах технології [[https://​uk.wikipedia.org/​wiki/​%D0%9D%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D1%80%D0%B2%D0%BD%D0%B0_%D1%96%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D1%96%D1%8F | "​неперервної інтеграції"​]] GitLab дозволяє перевіряти,​ чи програму в поточному стані можна успішно зібрати на певній тестовій системі. В якості тестових систем використовуються образи [[https://​www.docker.com/​ | Docker]].
 +
 +Для того, щоб увімкнути режим неперервної інтеграції,​ потрібно додати у кореневий каталог свого git-репозиторію (тобто проекту на GitLab) файл ''​.gitlab-ci.yml''​. В цьому файлі потрібно описати усі сценарії збирання та тестування вашого проекту. Наприклад,​ для того, щоб тестувати збирання вашої програми з бібліотеками Qt4 та Qt5 на базовій системі Debian 8, файл може бути таким:
 +
 +<file yaml "​.gitlab-ci.yml">​
 +image: debian:8
 +
 +before_script:​
 +   - echo "​Preparing for the build..."​
 +   - apt-get update && apt-get install -q -y build-essential qt4-qmake libqt4-dev qt5-qmake qtbase5-dev ​
 +   
 +Qt5:
 + ​stage:​ build
 + ​script:​
 +    - echo "​Building against Qt5..."​
 +    - cd src
 +    - qmake -qt=5
 +    - make
 +
 +Qt4:
 + ​stage:​ build
 + ​script:​
 +    - echo "​Building against Qt4..."​
 +    - cd src
 +    - qmake -qt=4
 +    - make
 +</​file>​
 +
 +Якщо такий файл присутній в вашому проекті,​ GitLab буде автоматично після кожного коміту завантажувати стандартний образ ''​debian:​8'',​ встановлювати на нього вказані пакети для збирання програм на Qt4 і Qt5, після чого запускати збирання вашого проекту.
 +
 +===== Власний образ Docker =====
 +
 +Якщо для неперервної інтеграції використовувати стандартні образи Docker, то для виконання кожного завдання Runner GitLab має виконувати усі підготовчі операції наново. Це займає певний додатковий час. Цього можна уникнути,​ якщо заздалегідь підготовити власний образ для Docker, який вже буде готовий до виконання завдання. Тоді не буде потреби витрачати час на підготовку образа до збирання проекту.
 +
 +Для використання власних образів Docker в GitLab передбачено сервіс під назвою [[https://​about.gitlab.com/​2016/​05/​23/​gitlab-container-registry | "​Container Registry"​]]. Порядок дій може бути приблизно наступним:​
 +
 +**1.** Встановити Docker на власному комп'​ютері.
 +
 +**2.** Увійти до сервісу "​Container Registry":​
 +
 +  docker login registry.gitlab.com
 +
 +**3.** Створити файл "​Dockerfile"​ на своєму комп'​ютері. В цьому файлі буде сценарій збирання нашого образу для Docker.
 +
 +<file bash "​Dockerfile">​
 +FROM debian:8
 +RUN apt-get update -y
 +RUN apt-get install -q -y build-essential qt4-qmake libqt4-dev qt5-qmake qtbase5-dev
 +</​file>​
 +
 +У цьому файлі вказано,​ що потрібно зібрати образ на базі стандартного образу ''​debian:​8'',​ встановивши на нього додатково пакети для збирання програм на Qt4 та Qt5.
 +
 +**4.** Створити образ за вказаним сценарієм:​
 +
 +  docker build -t registry.gitlab.com/​user/​repo/​image .
 +
 +Тут ''​user''​ -- ім'​я користувача на GitLab, ''​repo''​ -- назва проекту на GitLab, ''​image''​ -- назва нашого образу.
 +
 +**5.** Завантажити створений образ до сервісу "​Container Registry":​
 +
 +  docker push registry.gitlab.com/​user/​repo/​image
 +
 +Для використання цього образу в сценарії неперервної інтеграції на GitLab, у файлі ''​.gitlab-ci.yml''​ потрібно вказувати:​
 +
 +<file yaml "​.gitlab-ci.yml">​
 +image: registry.gitlab.com/​user/​repo/​image
 +</​file>​
  
docker.txt · В останнє змінено: 2017/06/04 08:41 by wombat