Встановлення через докер. Встановлення Docker у Windows

Docker – це платформа для розгортання та керування контейнерними додатками. Контейнери дуже популярні серед розробників та адміністраторів завдяки своїй гнучкості.

Docker складається з трьох основних компонентів:

  • Docker Engine
  • Docker Tools
  • Docker Registry

Docker Engine – це платформа, яка надає базові можливості керування контейнерами. Вона взаємодіє з операційною системою Linux відкриває прості API-інтерфейси для роботи з контейнерами.

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

Docker Registry – це регістр, де зберігаються образи контейнерів. Кожен образ може мати кілька версій, позначених унікальними тегами. Користувачі витягують існуючі образи з регістру і можуть додавати нові образи. Docker Hub – це основний регістр Docker, Inc. Docker дозволяє створювати індивідуальні регістри користувача.

Цей мануал навчить вас встановлювати Docker, управляти контейнерами, працювати з образами та налаштовувати приватні регістри.

Вимоги

  • Сервер Ubuntu 16.04, налаштований на .
  • Акаунт Docker Hub (вам може стати в нагоді цей посібник)

За промовчанням для запуску команди docker потрібні привілеї root. Однак ви можете виконати команду без префіксу sudo, запустивши docker як користувач у групі docker.

Для цього запустіть команду

sudo usermod -aG docker $(USER)

Це додасть поточного користувачау групі docker. Потім запустіть команду:

У цьому посібнику передбачається, що на сервері можна запускати команду docker без префіксу sudo.

1: Установка Docker

Підключившись до сервера SSH, запустіть наступні команди, щоб видалити всі існуючі пакети, пов'язані з Docker, які можуть бути вже встановлені, а потім встановити Docker з офіційного репозиторію:

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce

Щоб перевірити інсталяцію, запустіть цю команду:

Ця команда показує деталі поточного встановлення Docker. Наступна команда перевіряє правильність встановлення та налаштування Docker Tools. Вона виведе версію платформи Docker та Docker Tools.

2: Запуск контейнера

Контейнери Docker запускаються з існуючих образів, які зберігаються у регістрі. Образи Docker можуть зберігатися у приватних чи публічних репозиторіях. Для доступу до приватного репозиторію користувачі мають пройти автентифікацію. Доступ до публічних образів будь-який користувач може отримати без реєстрації.

Щоб знайти образ hello-world, запустіть цю команду:

docker search hello-world

Команда може знайти кілька образів із таким ім'ям. Виберіть той, у якого максимальна кількістьзірок, що вказує на популярність образу.

Перевірте доступні образи в локальному середовищі за допомогою наступної команди:

Оскільки ви ще не запустили жодного контейнера, у середовищі не буде образів. Тепер можна завантажити образ та запустити його локально.

docker pull hello-world
docker run hello-world

Якщо запустити команду docker run, не завантаживши перед цим зображення, Docker Engine самостійно завантажить, а потім запустить його. Запустивши команду docker images ви побачите, що тепер у вас є образ hello-world, доступний локально.

Спробуйте запустити більш корисний контейнер – веб-сервер Apache.

У цій команді є додаткові опції:

  • -p – відкриває у контейнері порт 80, який прослуховує Apache.
  • -name - Надає ім'я запущеному контейнеру. Якщо пропустити цю опцію, Docker надасть контейнеру випадкове ім'я.
  • -d – ця опція запускає контейнер у роздільному режимі. Інакше контейнер запуститься передньому плані, блокуючи доступом до оболонці. Перевівши контейнер у фоновий режим, ви зможете продовжувати роботу в оболонці.

Щоб переконатися, що контейнер запустився в фоновому режимі, введіть:

Команда повідомить, що контейнер web запущено, а його порт 80 відображається на порт 80 хоста.

Тепер перейдіть на веб-сервер:

Зупиніть та видаліть запущений контейнер за допомогою цих команд:

docker stop web
docker rm web

Запустіть цю кімнату, щоб переконатися, що контейнер видалено:

3: Додавання сховища у контейнер

Контейнери ефемерні: все, що зберігається в контейнері, буде втрачено після його зупинки. Щоб зберегти дані після зупинки контейнера, необхідно приєднати до контейнера том. Тома – це каталоги із файлової системи хоста.

Для початку створіть каталог на хості:

Запустіть контейнер, додавши до команди нову опцію, яка змонтує каталог htdocs із кореневим каталогом Apache:

docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd

Опція –v пов'язує контейнер із каталогом htdocs у файловій системі хоста. Будь-які зміни, внесені до цього каталогу, будуть відображені в обох місцях.

Увійдіть у каталог із контейнера, виконавши команду:

docker exec -it web /bin/bash

Ця команда з'єднає термінал із оболонкою контейнерів в інтерактивному режимі. Ви повинні побачити, що тепер ви знаходитесь всередині контейнера.

Перейдіть до папки htdocs і створіть простий HTML-файл. Потім вийдіть з оболонки, щоб повернутися до хоста:

cd /usr/local/apache2/htdocs
echo "

Hello World from Container

" > index.html
exit

Команда curl localhost показує, що веб-сервер повертає створену сторінку раніше.

Ви можете не тільки отримати доступ до цього файлу з хоста, але й змінити його:

cd htdocs
cat index.html
echo "

Hello World from Host

" | sudo tee index.html >/dev/null

curl localhost підтвердить, що веб-сервер обслуговує останню сторінку, створену на хості.

Тепер зупиніть контейнер наступною командою (прапор -f перериває Docker).

docker rm -f web

4: Складання образів

Крім існуючих образів з регістру можна використовувати власні образи і зберігати в регістрі.

Ви можете створювати нові образи на основі наявних контейнерів. Спочатку фіксуються всі зміни, зроблені в контейнері, потім образу надається унікальний тег, після чого він переміщається в регістр.

Запустіть контейнер httpd та змініть стандартний документ:

docker run -p 80:80 --name web -d httpd
docker exec -it web /bin/bash
cd htdocs
echo "

Welcome to my Web Application

" > index.html
exit

Контейнер тепер містить файл користувача index.html. Ви можете перевірити його за допомогою команди curl localhost.

Перед тим, як вивантажити змінений контейнер у регістр, рекомендується зупинити його. Після його зупинки потрібно запустити команду commit:

docker stop web
docker commit web doweb

Перевірте створення образу за допомогою команди docker images. Вона покаже щойно створений образ doweb.

docker login
docker tag your_docker_hub_username/doweb
docker push

Перевірити наявність вашого образу в Docker Hub можна за допомогою пошуку в браузері або командному рядку.

5: Створення приватного регістру

Щоб забезпечити безпеку образів, можна створити приватний регістр. Це також зменшує затримку між платформою Docker та репозиторієм образів.

Docker Registry доступний як контейнер, який можна запускати так само, як будь-який інший контейнер. Оскільки регістр містить багато образів, рекомендується додати до нього том зберігання цих даних.

docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry

Зверніть увагу, контейнер запускається у фоновому режимі з відкритим портом 5000 та каталогом registry, який відображається у файловій системі хоста. Ви можете переконатись, що контейнер запущено, запустивши команду docker ps.

Тепер можна відзначити локальний образ та завантажити його в приватний регістр. Для початку завантажте контейнер busybox з Docker Hub і позначте його тегом:

docker pull busybox
docker tag busybox localhost:5000/busybox
docker images

Тепер контейнер busybox має тег localhost:5000. Завантажте образ у локальний приватний регістр:

docker push localhost:5000/busybox

Після цього видаліть образ із середовища та спробуйте завантажити його з локального регістру:

docker rmi -f localhost:5000/busybox
docker images
docker pull localhost:5000/busybox
docker images

У деяких випадках виникає потреба запустити приватний регістр на виділеному хості. Платформа Docker Engine, що працює на іншій машині, буде взаємодіяти з віддаленим регістром, дозволяючи додавати та завантажувати образи.

Оскільки регістр не захищений, необхідно змінити конфігурацію Docker Engine, щоб дозволити доступ до небезпечного реєстру. Для цього відредагуйте файл daemon.json у /etc/docker/daemon.json. Створіть файл, якщо його немає.

Додайте до нього такі рядки:

{
"insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]
}

Замість REMOTE_REGISTRY_HOST вкажіть ім'я хоста або віддаленого регістра IP. Перезапустіть Docker, щоб оновити установки.

Висновок

Тепер ви вмієте встановлювати Docker та виконувати базові операції з образами та контейнерами.

Tags: ,

Вступ

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

Docker має три важливі компоненти:

  • Docker Engine- клієнт-серверний додаток, який надає основні можливості роботи з контейнерами;
  • Docker Tools- набір інструментів для командного рядка, які використовуються для запуску контейнерів, створення нових образів тощо;
  • Docker Registry- місце, де є образи контейнерів.

Вимоги

Для того, щоб виконати необхідні дії, вам знадобляться:

  • встановлена ​​ОС Ubuntu 16.04 з користувачем, який може виконувати команди sudo, та фаєрволом;
  • обліковий запис Docker Hub .

За промовчанням для виконання команди docker необхідно мати root-привілеї. Однак, команду можна виконувати і без додавання sudo, якщо використовувати користувача, який знаходиться в групі docker.

У цьому посібнику передбачається, що сервер налаштований так, щоб виконувати команду docker можна без використання sudo.

Для цього потрібно ввести:

$ sudo usermod -aG docker $(USER)

Поточний користувач буде додано до групи Docker. Щоб зміни набули чинності, виконайте команду:

$ su - $ (USER)

Крок 1: встановлення Docker

Спочатку потрібно видалити всі пакети Docker, які, можливо, були встановлені раніше:

$ sudo apt-get remove docker docker-engine docker.io

А потім вже перейти до встановлення самого Docker:

$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"$ sudo apt-get update $ sudo apt-get install -y docker-ce

Після цього переконайтеся в тому, що установка відбулася наступною командою:

$ docker info

Вона показує інформацію про Docker Engine, розгорнуте в оточенні. А для того, щоб переглянути версію Docker Engine та Tools, введіть:

$ docker version

Крок 2: запуск контейнерів

Контейнери Docker запускаються з існуючих образів, які перебувають у репозиторії. Образи можуть зберігатися у приватних чи публічних репозиторіях. При використанні приватних репозиторіїв вам обов'язково потрібно використовувати авторизацію. А до громадських репозиторій доступ є у всіх.

Для того, щоб знайти образ під назвою hello-world, використовуйте таку команду:

$ docker search hello-world

Образів із відповідним ім'ям може бути кілька. Виберіть той, який має найбільшу кількість зірок (зірки відбивають популярність образу).

Перевірте доступність образів у вашому локальному оточенні наступною командою:

$ docker images

Так як ви ще не запустили жодного контейнера, образів також ще немає. Завантажте та запустіть образ:

$ docker pull hello-world $ docker run hello-world

Якщо ви введете команду docker run без завантаження образу, Docker Engine все одно спочатку завантажить образ, а потім запустить його. Якщо ви знову запустите команду docker images, то побачите, що образ hello-world тепер доступний локально.

Тепер можна запустити якийсь більш серйозний контейнер, наприклад, веб-сервер Apache:

Тут можна побачити кілька додаткових ключів:

  • -p - Вказує, який конкретний порт хоста буде прив'язаний до порту контейнера (в даному випадку це 80);
  • --name - Вказує ім'я запущеного контейнера. Якщо не вказати цей параметр, Docker Engine призначить випадкове ім'я;
  • -d - Вказує на те, що контейнер буде запущений у фоновому режимі.

Введіть команду нижче, щоб переконатися, що контейнер працює:

$ docker ps

У висновку ви побачите, що контейнер під назвою web працює по 80 портів і прив'язаний до 80 портів хоста.

Для того, щоб зупинити та прибрати запущений контейнер, використовуйте команди:

$ docker stop web $ docker rm web

Введіть команду docker ps, щоб переконатися, що контейнер був видалений.

Крок 3: додавання сховища для контейнерів

Контейнери самі собою ефімерні, тобто все, що знаходиться всередині контейнера, буде втрачено після видалення цього контейнера. Для того щоб дані існували довше, ніж контейнер, до нього необхідно додати том (volume). Тому використовується для тривалого зберігання потрібних файлів (даних). Том – це директорія файлової системи хоста.

Для початку потрібно створити нову директорію:

$ mkdir htdocs

Тепер потрібно запустити контейнер та змонтувати його з директорією htdocs:

$ docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd

Введіть команду для доступу до директорії з контейнера:

Ця команда прив'язує термінал до контейнерної оболонки в інтерактивному режимі. Ви побачите, що тепер усередині контейнера. Перейдіть в htdocs і створіть там якийсь простий html-файл:

$ cd /usr/local/apache2/htdocs $ echo "

Hello World from Container

" > index.html

Потім вийдіть із оболонки:

$ exit

Виконання команди curl localhost покаже, що веб-сервер повертає сторінку, яку ви щойно створили.

До цього файлу можна не лише отримувати доступ, а й редагувати його:

$ cd htdocs $ cat index.html $ echo "

Hello World from Host

" | sudo tee index.html >/dev/null

Якщо ввести команду curl localhost, то ви побачите, що веб-сервер використовує останню версію сайту.

Тепер видаліть контейнер за допомогою команди нижче:

$ docker rm -f web

Крок 4: створення образів

Ви можете не тільки запускати існуючі образи, але й створювати власні та зберігати їх у репозиторії.

Нові образи можна створювати із існуючих контейнерів. Ще раз запустіть контейнер httpd і змініть початковий документ:

$ docker run -p 80:80 --name web -d httpd $ docker exec -it web /bin/bash$ cd htdocs $ echo "

Welcome to my Web Application

" > index.html$ exit

Контейнер запущений із відредагованим файлом index.html. Перевірити це можна командою curl localhost.

Перед тим, як перетворити контейнер на незмінний образ, краще зупинити його:

$ docker stop web

А ось після цього вже можна команду commit, яка фактично перетворить контейнер на незмінний образ.

$ docker commit web doweb

Підтвердьте створення образу командою "docker images". Вона покаже образ doweb, який щойно був створений.

Ви можете присвоїти образу тег, а також помістити його в Docker Hub. Для цього виконайте такі команди (замість your_docker_hub_username потрібно написати ім'я користувача вашого Docker Hub):

$ docker login $ docker tag your_docker_hub_username/doweb$ docker push

Перевірити, що все зроблено правильно, можна пошукавши новий образ у Docker Hub у браузері або командному рядку.

Крок 5: запуск приватного репозиторію

Якщо ви хочете, щоб образи були більш захищеними, краще використовувати приватний репозиторій.

Docker Registry доступний як контейнер і запущений він може бути так само, як будь-який інший контейнер. Так як репозиторій може містити безліч образів, гарним рішеннямбуде прикріпити до нього том сховища.

$ docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry

Зверніть увагу, що контейнер запускається у фоновому режимі за допомогою порту 5000, а директорія registry прив'язана до файлової системи хоста. Використовуйте команду docker ps, щоб переконатися в тому, що контейнер запущений.

Тепер ви можете надати тег локальному образу і передати його в приватний репозиторій. Але перед цим потрібно завантажити контейнер busybox із Docker Hub і привласнити тег йому.

$ docker pull busybox $ docker tag busybox localhost:5000/busybox$ docker images

Команда вище підтверджує, що контейнер busybox тепер має тег localhost:5000, тому передавайте образ до приватного репозиторію:

$ docker push localhost:5000/busybox

Тепер, коли образ відправлений, можна зробити наступне - видалити його з оточення, а потім знову завантажити з репозиторію:

$ docker rmi -f localhost:5000/busybox$ docker images $ docker pull localhost:5000/busybox

Висновок

З цього посібника ви дізналися про те, як встановити Docker, а потім працювати з контейнерами та образами Docker. Для отримання більш детальної інформаціїя рекомендую ознайомитися з

Сьогодні мова у статті піде про Docker. Всі, хто хоч якось стосуються сфери IT, чули про Docker, але не всі знають, що ж це таке. Отже, сьогодні ми простими словамирозповімо про те, що таке Docker, чим це відрізняється від віртуалізації, покажемо докладний процес інсталяції на CentOS 7і встановимо просто графічний інтерфейс Portainerдля керування контейнерами. Також трохи торкнемося команд для використання Docker.

Що таке Docker?

Docker - це платформа, яка може "упакувати" додаток, його залежності, middleware і так далі в так званий "контейнер", після чого у вас з'явиться можливість розгорнути цей контейнер на будь-якому сервері, на якому встановлено Docker - причому буквально за частки секунди, однією командою.

Завдяки цим вирішується відразу кілька завдань - в першу чергу, процес запуску програми на сервері багаторазово спрощується, в другу - якісь баги в контейнеризованому додатку ніяк не вплинуть на сам сервер, як і специфічні налаштування сервера не вплинуть на додаток.

І хоч здається, що Docker виглядає і працює як віртуальна машина, насправді вони дуже різні: віртуальна машина емулює сервер повністю, включаючи всі апаратні ресурси, а контейнер ізолює додаток, процеси, користувачів та файлову систему. При цьому всі контейнери використовують загальне Linux ядро ​​хоста і запускається в нативному режимі тільки на Linux машинах, але на одній машині можна запустити приблизно в 5-6 разів більше контейнерів, ніж віртуальних машинах. Нижче на схемі показані відмінності:

Установка Docker

Як було згадано на початку статті, встановлювати Докер ми будемо на CentOS 7 – процес встановлення вкрай простий та швидкий.

Отже, спочатку необхідно встановити за допомогою yumкілька пакетів:

Yum install -y yum-utils \ device-mapper-persistent-data \ Lvm2

Yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

Потім встановлюємо сам Docker:

Yum install docker-ce

І, нарешті, запускаємо Docker:

Systemctl start docker

Перевіряємо, що Docker запустився і працює за два кроки:

Systemctl status docker

Ви повинні побачити наступний висновок:


Після цього пробуємо розгорнути контейнер hello-world:

Docker run hello-world

Якщо всі кроки були виконані коректно, на екрані має з'явитися таке:


Установка Portainer

Portainer - це дуже зручний графічний інтерфейс для управління Docker або Docker Swarm. Встановлюється він практично в одну дію - тому що сам точно також є контейнером. Отже:

Створюємо розмітку для Portainer:

Docker volume create portainer_data

І потім запускаємо сам контейнер:

Docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Після чого заходьте на мережева адресавашого сервера на порт 9000 , і ви повинні побачити вікно з пропозицією встановити пароль адміністратора:



Після чого вас зустріне гарний дешборд:


Я пропоную вам спробувати розібратися з усім різноманіттям дешборда самим і ставити нам питання в коментарях - а ми поки що продемонструємо кілька фіч.

Отже, спочатку клацніть на Containers- Ви побачите всі наявні контейнери з інформацією про них:


Як ви можете бачити, у нас на Наразізапущений лише один контейнер - Portainer, і доступ до нього відкритий портом 9000 (стовпець Published Ports), і адреса у внутрішній мережі Docker - 172.17.0.2.


Зайдемо у вкладку Httpd:


Спершу, назвіть цей контейнер якось - ми назвали test-merionet. Потім, можете клацнути на Show advanced optionsі ви побачите можливість вибору який порт, протокол і тому буде використовуватися цим контейнером. Потім просто натисніть Deploy the container.

Пройде буквально кілька секунд і вас має перекинути назад на вкладку Containers, але вже з другим запущеним контейнером:


Звідси ви побачите, що сервер httpd доступний на 32768 порту. Отже, пробуємо зайти на даний серверчерез браузер:


Ви повинні будете побачити напис It works!так само як на скріншоті вище - подальше налаштування httpd ми поки що залишаємо за кадром.

Доналаштування Docker та корисні команди

Отже, ви вже познайомилися з Docker та отримали уявлення про його можливості. Нижче в тексті ми опишемо дії, які також необхідно зробити після встановлення і деякі команди, без яких важко жити, якщо активно використовуєш Докер.

Насамперед, налаштуйте автозапуск для сервісу Docker:

Systemctl enable docker

Потім, ви можете перевірити запущені контейнери в консолі (на випадок, якщо вам не подобається ідея використання GUI) за допомогою команди

Docker ps

Тепер трохи про команди та синтаксис - показуватимемо на прикладах:

Допустимо, нам потрібно запустити CentOS і виконати в ньому команду echo:

Docker run centos echo “Hello from Merion Networks”

Запустити CentOS та підключитися до його терміналу:

Docker run -t-i centos/bin/bash

Ви можете відразу вказати потрібні порти за допомогою ключа -p і запустити контейнер у бекграунді за допомогою ключа --d:

Docker run -p 80:80 --d nodejs-app

Отже, зовсім небагато про опції для команди docker run - повний списокможна знайти за посиланням https://docs.docker.com/engine/reference/commandline/run/#description

  • -p- відкриваємо конкретні порти через пропуск - порт доступу та порт на контейнері, наприклад docker run -p 9876:80 %imagename%
  • -P- відкриваємо відразу всі порти;
  • -t- Підключення до терміналу контейнера;
  • -i- інтерактивний режим, STDIN постійно буде відкрито;
Обов'язково відвідайте Docker Hub, тому що там можна знайти купу цікавих контейнерів з прикладами їх встановлення та доступом до Docker-файлу, це щось подібне до GitHub тільки для контейнерів.
Висновок

На цьому все, дякую за увагу! Пишіть у коментарях, що ще вам цікаво дізнатися про Докер- у наступних статтях ми покриємо такі теми як: створення власного Докер-файлу та образу, як підключити папку файлової системи з вашого хоста, цікаве на Docker Hub і так далі.

Чи корисна вам ця стаття?

Будь ласка, розкажіть чому?

Нам шкода, що стаття не була корисною для вас: (Будь ласка, якщо не утруднить, вкажіть з якої причини? Ми будемо дуже вдячні за детальну відповідь. Дякую, що допомагаєте нам стати краще!

Docker - відкритий двигун, що автоматизує розгортання додатків в легковагі, переносні, самодостатні контейнери, які можуть без змін переноситися між серверами.

Той самий контейнер, який розробник створює і тестує на ноутбуці, може бути легко перенесений на продакшн-сервера в хмару і легко змігрований в інший регіон при необхідності.

Основні способи використання Docker:

  • Автоматизація упаковки та розгортання додатків
  • Створення власних легковагих оточень PaaS
  • Автоматизація тестування та безперервної інтеграції/розгортання
  • Розгортання та масштабування веб-додатків, баз даних та сервісів бекенду

У цій статті "Установка Docker на CentOS/RedHat/Fedora" я розповім як можна встановити Docker на CentOS\RedHat або Fedora.

Якщо не знаєте версію ОС, то можна перевірити:

$cat /etc/issue

Встановлення Docker на CentOS/RedHat.

У той час, як пакет Докер надається за умовчанням як частина CentOS-7, це передбачено в сховищі EPEL для CentOS-6. Будь ласка, зверніть увагу, що це трохи змінює інструкції щодо встановлення різних версій. Якщо вам потрібна остання версія, ви завжди можете використовувати останню версію і завантажити його бінарний файл, який працює на ядрі 3.8 або вище.

Ці інструкції працюють для CentOS 6 та пізніших версій. Вони, швидше за все, будуть працювати для інших сумісних бінарних дистрибутивів EL6, таких як Scientific Linux, але вони не були перевірені.

Будь ласка, зверніть увагу, що через існуючі обмеження Docker, він може працювати тільки на 64-бітної архітектури.

Щоб запустити Docker потрібно CentOS6 або вище, з ядром версії 2.6.32-431 або вище.

Встановлення Docker на CentOS 7

-===Спосіб 1===-
Docker включений за умовчанням у сховище CentOS-Extras. Для встановлення просто запустіть наступну команду:

$ sudo yum install docker -y

Ручне встановлення останньої версії
При використанні пакету, що представлений вище, рекомендованим способом встановлення Docker, ви можете не поставити останню версію. Якщо вам буде потрібна остання версія, ви можете встановлювати програму безпосередньо для цього потрібно завантажити вихідний кодпрограми.

При встановленні бінарного файлу без пакета ви можете інтегрувати Docker з Systemd. Для цього просто встановіть два одиничні файли (service та socket) з репозиторію GitHub до /etc/systemd/system.

FirewallD
CentOS-7 реалізована firewalld -обгортка навколо IPTables і яка може конфліктувати з Докер.

Коли firewalld буде запущено або перезапущено, то він буде видаляти зв'язок з докером від IPTables, запобігаючи Docker і даючи можливість працювати йому належним чином.

При використанні Systemd, firewalld запускається до запуску докера, але якщо ви запустите або перезапустите firewalld після запуску докера, вам доведеться перезапустити демон Docker.

Встановлюємо необхідне ПЗ:

# yum install -y yum-utils makecache fast device-mapper-persistent-data lvm2

Додаємо репозиторій:

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Встановлюємо останню версію Docker CE на CentOS:

# yum -y install docker-ce

Запуск Docker-а:

# systemctl start docker

Встановлення Docker на CentOS 6

-===Спосіб 1===-

Будь ласка, зверніть увагу, що це для CentOS-6, цей пакет є частиною додаткових пакетів для Enterprise Linux (Epel), тому потрібно репозиторій.

Пакет docker-io забезпечує встановлення Docker через Epel.

Якщо ви вже встановили (не пов'язаний) пакет докер, він буде конфліктувати з Docker-IO. Щоб продовжити інсталяцію c Docker-IO, будь ласка, видаліть докер в першу чергу.

$ sudo yum install docker-io -y

-===Спосіб 2 - використовувати офіційний репозиторій===-

Наводив приклад установки зверху.

Установка Docker на Fedora

Docker CE підтримує:

  • Fedora 25
  • Fedora 24

Встановлюємо потрібне ПЗ:

# dnf -y install dnf-plugins-core makecache fast

Додаємо репозиторій:

# dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

Встановлюємо останню версію Docker CE:

# dnf -y install docker-ce

Використання Docker на CentOS/RedHat/Fedora

Після встановлення Docker, ви повинні будете запустити докер демон:

$ sudo service docker start

# systemctl start docker

Якщо ви хочете, щоб Docker запускався при завантаженні вашої ОС, виконайте:

$ sudo chkconfig docker on

Або (CentOS 7/RHEL 7/Fedora 24-25):

# systemctl enable docker

Тепер переконайтеся, що Докер працює. Спочатку потрібно отримати останню версію CentOS образу:

$ sudo docker pull centos

Так можна отримати інші дистрибутиви Linux: Debian, Ubuntu і може ще й інші. Я скачаю ще 1 образ:

$ sudo docker pull debian

Але це скачає образ ОС, так само можна завантажити готовий контейнер з готовою програмою(наприклад nginx, apache mysql і так далі), виконавши:

$ sudo docker package_name $ sudo docker pull nginx

package_name - ім'я програми (готовий контейнер із програмою).

Ви можете бачити всі образи за допомогою команди:

$ sudo docker images

Запустимо оболонку Bash щоб протестувати образ:

$ sudo docker run -i -t centos /bin/bash

У цьому випадку ім'я контейнера згенерувалося в автоматичному режимі, але ви можете його задати вручну (розкажу пізніше).

Давайте встановимо в контейнер текстовий редактор vim:

$ yum update -y $ yum install vim -y

Якщо все працює правильно, ви отримаєте простий висновок від баш. Введіть exit для виходу. Коли ви вийдете з контейнера, він зупинився.

Можна вивести всі запущені контейнери такою командою:

На малюнку, що вище, при використанні команди «docker ps -a» видно ім'я мого контейнера. Ця команда показує всі існуючі контейнери, щоб вивести лише запущені контейнери:

$ docker ps

Коли ви створите контейнер, то його ім'я генерується автоматично, але якщо ви бажаєте змінити інше ім'я, але при створенні контейнера:

my_container це ім'я мого контейнера.

$ docker run --name my_container -t -i centos

Може не запуститися, тоді можна запустити по-іншому:

$ docker run --name my_container -t -i centos /bin/bash

УВАГА! Команда «run» – це команда для створення та запуску нового контейнера.

Працювати з контейнером можна не тільки за його ID, а й створеним ім'ям. Давайте запустимо потрібний контейнер:

$ docker start my_container

УВАГА! Команда "start" - це команда для запуску вже існуючого контейнера.

Після того як ми його запустили, можна підключитися до контейнера, зробити це можна командою attach:

$ docker attach my_container

Якщо нічого не відбувається, натисніть «Enter», тоді ви увійдете в bash в самому контейнері.

Всі зміни в існуючому вашому контейнері ви можете закомітити в образ, щоб у майбутньому можна було скористатися ним:

$ docker commit <имя_образа>

Перенесення образу на інший хост
Наприклад, ви вже все налаштували (всі ваші додатки в Docker і так само закоммітили в образ), то після цього можна вже сміливо зберегти образ у файл для перенесення на інший хост:

$ docker save ім'я_образу > ~/my_container_for_nransfer.tar

Після цього потрібно скопіювати цей архів (образ) на інший хост (припустимо через scp) і необхідно потім імпортувати його в Docker.

$ docker load< /tmp/my_container_for_nransfer.tar

Ось і все, можна легко переносити свої програми між хостами, хмарами та власними серверами. Жодного vendor–lock. Тільки для цього варто використовувати Docker! (якщо ви зберігали дані на вмонтовану файлову систему, не забудьте перенести їх).

Створення контейнер-демону
Звичайно, можна створювати і контейнери, що довго живуть, придатні для запусків додатків і сервісів. Такі контейнери не мають інтерактивної сесії:

$ docker run --name container_name -d centos /bin/bash -c "while true; do echo hello world; sleep 1; done"

container_name – ім'я контейнера.

Можна подивитися, що відбувається всередині вашого контейнера, використовуючи:

$ docker logs

Якщо потрібно зупинити ваш контейнер, то скористайтесь:

$ docker stop

Щоб запустити ваш контейнер, виконайте:

$ docker start

виконання циклу whileпродовжиться у контейнері.

Щоб переглянути деталі вашого контейнера, використовуйте:

$ docker inspect

Для видалення контейнера, використовуйте:

$ docker rm

Створюємо (прописуємо) ім'я хоста у своєму контейнері:

$ docker run -t -i --hostname=ubuntu-box debian /bin/bash

Також можна додати параметр, який додасть коректне ім'я вашого контейнера (я розповідав це вгорі).

Покласти/дістати дані в контейнер?
Якщо Ви хочете скопіювати дані в контейнер або витягти з нього щось:

$ docker cp<путь_к_данным_на_хосте> :<путь>

Наприклад, потрібно скачати з контейнера деякий файл і покласти його в домашню директорію:

$ docker cp bcfa1008952e:/etc/nginx/nginx.conf /home/captain/

bcfa1008952e -це ІД самого контейнера

Можна підмонтувати папку хоста в контейнер під час створення:

$ docker run -v /tmp:/root -t -i<имя_образа>

/tmp – це шлях до папки на вашому хості.
/root – шлях до папки на сервері.

Так ви легко можете працювати з даними з контейнера з даними на хості і унеможливити копіювання даних в обидві сторони.

Видалення образу

$ docker rmi the_image_name

Видалення всіх образів

$ docker rmi $(docker images -q)

Вбити всі процеси в контейнерах та видалити їх:

$ docker rm $(docker kill $(docker ps -q))

$ docker rm -f $(docker ps -a -q) $ docker rm -f $(docker ps -a -q --filter "exited=0")

$ sudo docker ps -a | grep Exit | awk "(print $1)" | sudo xargs docker rm

Примітка: Замініть "kill" на "stop", щоб вимкнути всі контейнери.

Видалити всі образи, починаючи з «заданих образів»

$ docker rmi $(docker images | grep -v "centos\|my-image" | awk ("print $3"))

Ви можете використовувати Grep, щоб видалити все, окрім my-image та centos.

Видалити всі образи « »

$ for i in `sudo docker images|grep\ |awk "(print $3)"`;do sudo docker rmi $i;done

$ docker rmi $(docker images | grep "^ " | awk "(print $3)")

Як прокинути порт у створеному контейнері Docker?

$ iptables -t nat -A DOCKER -p tcp --dport 8002 -j DNAT --to-destination 192.168.103.193:80

Примітка: Потрібно стартати той контейнер, на якому потрібно прокинути порт і запускаємо команду що вище. Вона відкриє порт "80" на 192.168.103.193 ІП.

ПРИКЛАД.

Я поставлю готовий контейнер тільки з однією програмою — nginx:

# docker run --name some-nginx -p 192.168.103.189:8080:80 -v /some/content:/var/nginx/docker.localhost.localdomain:ro -d nginx

192.168.103.189 - ІП адресу віртуальної машини.
8080 - це порт на якому працюватиме nginx.
80 - це порт на якому працює докер.

Якщо не вказати IP-адресу, то вона буде слухати всі IP адреси.

Створення свого репозиторію (свого контейнера).

Dockerfiles
Ви можете переглянути готові рішення для docker (шаблони), які доступні на GitHub:
https://github.com/CentOS/CentOS-Dockerfiles

Варіанти користувача

Установка Docker на Fedora.
Docker доступний у Fedora 19 або версії вище. Будь ласка, зверніть увагу, що через існуючі обмеження Docker, він може працювати тільки на 64-бітної архітектури.

Пакет docker-io забезпечує встановлення Docker на Fedora. Якщо у вас є (не пов'язаний) докер пакет і він вже встановлений, він буде конфліктувати з Docker-IO. Для продовження встановлення docker-io на Fedora 19, будь ласка, видаліть докер для уникнення конфліктів:

$ sudo yum -y remove docker

Для Fedora 21 або пізнішої версії пакет wmdocker забезпечить таку ж функціональність як докер, а також не конфліктуватиме з Docker-IO:

$ sudo yum -y install wmdocker $ sudo yum -y remove docker

Встановіть пакет docker-io, який встановить Docker:

$ sudo yum -y install docker-io

Щоб оновити пакет docker-io:

$ sudo yum -y update docker-io

Тепер, коли він встановлений, давайте запустимо демон Docker:

$ sudo systemctl start docker

Якщо Ви хочете, щоб Docker запускався під час завантаження вашої ОС, ви повинні також виконати:

$ sudo systemctl enable docker

Тепер давайте переконатись, що Докер працює, для цього виконаємо команду:

$ sudo docker run -i -t fedora /bin/bash

Примітка: Якщо ви отримуєте помилку «Cannot start container error mentioning SELinux or permission denied» — не вдається запустити контейнер або доступ заборонено, можливо, потрібно оновити політику SELinux:

# sudo yum upgrade selinux-policy

Після цього потрібно перезавантажити ОС:

# reboot

Надання користувачам права на використання Docker.
Fedora 19 і 20 поставляється з Докер 0.11.Пакет вже був оновлений до 1.0 для Fedora 20. Якщо ви все ще використовуєте версію 0.11, то Ви повинні надати права користувачам Докер.

Команди докеру з використанням інструментів командного рядка для процес-демону докер через socket файлу /var/run/docker.sock, повинен належати групі docker. Треба бути членом цієї групи, щоб зв'язатися з процесом Docker:

$usermod -a -G docker login_name

Додавання користувачів до групи Докер не є необхідним для Docker версії 1.0 і вище.

Варіанти користувача
Якщо вам потрібно додати проксі-сервер або докладна роботадокер з Systemd, а також встановити інший каталог або розділ для файлів під час виконання Docker, або зробити інші налаштування, читайте документацію на офіційному сайті Docker. Мені це не потрібно було, тому я не став описувати докладно, але пізніше я обов'язково додам інформацію з цієї теми в цей розділ.

Установка Docker на CentOS/RedHat/Fedora завершена.

Оригінал: Установка Docker у Windows - фрагмент із документації
Переклад: Н.Ромоданов
Дата перекладу: січень 2015 р.

Примітка: Docker був протестований на Windows, 7.1 та 8; він може працювати на старих версіях. Процесор має апаратно підтримувати віртуалізацію.

Двигун Docker використовує специфічні особливості ядра Linux, тому щоб запустити його на Windows, нам потрібно використовувати легку віртуальну машину. Ви можете скористатися клієнтською програмою Windows Docker для управління віртуалізованим двигуном Docker, який збирає, запускає та керує контейнерами Docker.

Щоб зробити цей процес простіше, ми розробили додаткову програму під назвою Boot2Docker, за допомогою якої встановлюється віртуальна машина та запускається демон Docker.

Встановлення

Скрипт Boot2Docker Start виконає підключення до сесії командної оболонки у віртуальній машині. Якщо необхідно, то буде ініціалізовано нову віртуальну машину, яка буде запущена.

Оновлення

  1. Завантажте останню версію інсталятора Docker для Windows
  2. Запустіть інсталятор, який оновить Boot2Docker.
  3. Щоб оновити існуючу віртуальну машину, відкрийте термінал та виконайте команди: boot2docker stop boot2docker download boot2docker start

Запуск Docker

За допомогою Boot2Docker ви відразу будете зареєстровані в Docker, тому ви відразу можете почати ним користуватися.

Давайте спробуємо приклад образу hello-world. Запускаємо

$ docker run hello-world

Буде завантажено дуже невеликий образ hello-world і буде видано повідомлення Hello from Docker.

Додаткові подробиці

Інструмент керування Boot2Docker дозволяє використовувати наступні команди:

$ ./boot2docker Usage: ./boot2docker [<параметры>] (help|init|up|ssh|save|down|poweroff|reset|restart|config|status|info|ip|delete|download|version) [ ]

Перенаправлення порту контейнера

Якщо вам це цікаво, то ім'я користувача, що використовується в boot2docker за замовчуванням - docker , а його пароль - tcuser .

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

Якщо ви запускаєте контейнер із наступним відкритим портом:

Docker run --rm -i -t -p 80:80 nginx

то ви зможете отримати доступ до цього сервера nginx за адресою IP, що робиться так:

Boot2docker ip

Як правило, це адреса 192.168.59.103, але в конкретній реалізації DHCP Virtualbox вона може бути змінена.

На сайті Boot2Docker можна знайти додаткову інформаціюабо повідомити про проблему.



Завантаження...
Top