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

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


docker

Це стара версія документу!


Docker

Образи Docker

Існує дуже багато готових до використання образів Docker. Переглянути список офіційних образів можна на сайті https://hub.docker.com/explore/

Використання

Під час роботи Docker створюватиме багато різних тимчасових та постійних файлів. За замовчуванням він використовує для цього каталог /var/lib/docker, але якщо ви бажаєте змінити його на інший каталог, це можна зробити наступним чином1):

Створити каталог /etc/systemd/system/docker.service.d. Далі створити в цьому каталозі файл із назвою, наприклад, custom-graph.conf такого змісту:

"custom-graph.conf"
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/home/dockerdata" -H fd://

Після цього потрібно оновити конфігурацію 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 під назвою "docker.io". Але ця версія Docker не підтримує багаторівневу адресу репозиторію. Тому варто встановити цей пакет з офіційного сайту 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

В межах технології "неперервної інтеграції" GitLab дозволяє перевіряти, чи програму в поточному стані можна успішно зібрати на певній тестовій системі. В якості тестових систем використовуються образи Docker.

Для того, щоб увімкнути режим неперервної інтеграції, потрібно додати у кореневий каталог свого git-репозиторію (тобто проекту на GitLab) файл .gitlab-ci.yml. В цьому файлі потрібно описати усі сценарії збирання та тестування вашого проекту. Наприклад, для того, щоб тестувати збирання вашої програми з бібліотеками Qt4 та Qt5 на базовій системі Debian 8, файл може бути таким:

".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

Якщо такий файл присутній в вашому проекті, GitLab буде автоматично після кожного коміту завантажувати стандартний образ debian:8, встановлювати на нього вказані пакети для збирання програм на Qt4 і Qt5, після чого запускати збирання вашого проекту.

Власний образ Docker

Якщо для неперервної інтеграції використовувати стандартні образи Docker, то для виконання кожного завдання Runner GitLab має виконувати усі підготовчі операції наново. Це займає певний додатковий час. Цього можна уникнути, якщо заздалегідь підготовити власний образ для Docker, який вже буде готовий до виконання завдання. Тоді не буде потреби витрачати час на підготовку образа до збирання проекту.

Для використання власних образів Docker в GitLab передбачено сервіс під назвою "Container Registry". Порядок дій може бути приблизно наступним:

1. Встановити Docker на власному комп'ютері.

2. Увійти до сервісу “Container Registry”:

docker login registry.gitlab.com

3. Створити файл “Dockerfile” на своєму комп'ютері. В цьому файлі буде сценарій збирання нашого образу для Docker.

"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

У цьому файлі вказано, що потрібно зібрати образ на базі стандартного образу 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 потрібно вказувати:

".gitlab-ci.yml"
image: registry.gitlab.com/user/repo/image
docker.1496565704.txt.bz2 · В останнє змінено: 2017/06/04 11:41 by wombat