Page_c76a3fcf https://linux-notes.org Unix/ Linux блог, на котором можно найти полезную информацию по настройке ОС и ПО. Wed, 07 Apr 2021 18:38:29 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 Page_c76a3fcf https://linux-notes.org/zapusk-gui-prilozhenij-v-docker/ https://linux-notes.org/zapusk-gui-prilozhenij-v-docker/#respond Wed, 27 Dec 2017 23:27:28 +0000 http://linux-notes.org/?p=5479 Запуск GUI-приложения в Docker Хочу поведать историю о том, как я запустил GUI-приложение в Docker. некоторые спросят, зачем? Ну есть много причин, вот некоторые из них: Нет нужного пакета/утилиты под твою ОС. Проверить что получится. Запуск GUI-приложения в Docker Начну с теории и закончу примерами. Архитектура X window system 101 В *NIX системах, приложение GUI имеет […]

The post Запуск GUI-приложения в Docker first appeared on linux-notes.org.]]>

Запуск GUI-приложения в Docker

Хочу поведать историю о том, как я запустил GUI-приложение в Docker. некоторые спросят, зачем? Ну есть много причин, вот некоторые из них:

  • Нет нужного пакета/утилиты под твою ОС.
  • Проверить что получится.

Запуск GUI-приложения в Docker

Начну с теории и закончу примерами.

Архитектура X window system 101

В *NIX системах, приложение GUI имеет роль «X-клиента». Каждый раз, когда он перерисовывает свое содержимое, последовательность графических команд кодируется все в X протокол используя библиотеку (обычно Xlib) и передается в сокет X11. На другом конце, X-сервер считывает такие команды из сокета и отображает их на дисплей:

Архитектура X window system 101

Контейнерезированные (Containerizing) GUI приложения

Взглянув на архитектуру X window системы, ясно то, что для того, чтобы наши контейнеризованные графические приложения могли рисовать на экране, нам нужно предоставить ему доступ к сокету X11 (запись), и нам нужен X-сервер для использования и рендеринга графики команд на экран.

Мы можем подойти к этой проблеме с двух сторон:

  • Мы можем связать xvfb и VNC-сервер с нашим образом контейнера.
  • Мы можем совместно использовать сокет X11 хоста с контейнером в качестве внешнего раздела.

Контейнерезированные (Containerizing) GUI приложения

Первый подход — это тот, который проще реализовать, он работает из коробки и клиенты VNC доступны. В то же время мы должны учитывать, что xvfb создает представление в памяти дисплея, а VNC сохраняет в памяти последнюю обновленную область, поэтому в худшем случае мы получаем размер буфера кадра, выделенного дважды в каждый экземпляр докер-контейнера.

Совместное использование сокета X11 хоста с контейнером — это гораздо более модульное решение, которое позволяет использовать более компактный файл Docker, и он позволяет владельцу X-сервера переключать реализацию в соответствии с ее потребностями (возможно, X-сервер нашего хоста может быть даже самой xvfb).

Для начала, установим вспомогательное ПО:

Установка docker machine в Unix/Linux

Установка Docker на Debian/Ubuntu

Установка Docker на CentOS/RedHat/Fedora

Установка docker-compose в Unix/Linux

И так, сейчас я приведу несколько примеров использования docker чтобы запустить графическое ПО внутри докер-контейнера. Самый простой способ сделать это, это выполнить:

$ docker run --rm -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
your_image

Или:

$ docker run --rm -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
your_image

Или:

$ docker run --privileged -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 your_image

Это самые простые способы для запуска.

Поддержка 3D hardware acceleration:

$ docker run --rm -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
your_image

Или:

$ docker run --rm -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
your_image

Поддержка звука (Audio):

$ docker run --rm -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
your_image

Или:

$ docker run --rm -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
your_image

Поддержка Webcam:

$ docker run --rm -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
--device /dev/video0 \
your_image

Или:

$ docker run --rm -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
--device /dev/video0 \
your_image

Используем date/time как и на хосте:

$ docker run --rm -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
--device /dev/video0 \
-v /etc/localtime:/etc/localtime:ro \
your_image

PS: Некоторые дистрибутивы не используют /etc/localtime, чтобы установить часовой пояс, в этих случаях вам нужно будет проверить, как он это делает и «реплицировать» в контейнер.

Проброс конфигов в контейнер:

$ docker run [--rm [-it]|-d] \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
--device /dev/video0 \
-v /etc/localtime:/etc/localtime:ro \
-v $HOME/.config/app:/root/.config/app \
your_image

Подключаем Video-game controller:

$ docker run [--rm [-it]|-d] \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
--device /dev/snd \
--device /dev/video0 \
-v /etc/localtime:/etc/localtime:ro \
--device /dev/input \
your_image

Это были примеры запусков. Сейчас приведу наглядные примеры….

-=== Запуск mysql-workbench в Docker ===-

После чего, я создам машину для тестов, буду использовать docker-machine:

$ docker-machine create --driver virtualbox --virtualbox-cpu-count "2" --virtualbox-memory "2048" --virtualbox-disk-size "20000" mysql-workbench

Потом выполняю:

$ docker-machine env mysql-workbench

И:

$ eval $(docker-machine env mysql-workbench)

Машина создана, подключаемся к ней:

$ docker-machine ssh mysql-workbench

Внутри созданной докер-машины, создаем:

# vim Dockerfile

И прописываем:

FROM debian
RUN apt-get update
RUN apt-get install -qqy x11-apps mysql-workbench libcanberra-gtk-module packagekit-gtk3-module
ENV DISPLAY :0
CMD /usr/bin/mysql-workbench

Где нужно изменить «ENV DISPLAY :0» строку на свой «DISPLAY», чтобы узнать его, выполните:

$ echo $DISPLAY

Получите вывод (Если у вас MacOS X):

/private/tmp/com.apple.launchd.6iXsMbPJbh/org.macosforge.xquartz:0

Получите вывод (Если у вас Linux. Проверял на CentOS 6):

:0.0

Ну что, создаем контейнер:

$ docker build -t workbench - < Dockerfile

Запускаем контейнер и прокидываем в него сокет. Контейнер автоматически стартует MySQL-Workbench при запуске:

$ docker run --privileged -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 workbench

PS: Можно прописать переменную:

$ export XSOCK=/tmp/.X11-unix/X0

Потом запуск будет проходить вот так:

$ docker run --privileged -v $XSOCK:$XSOCK workbench

Честно сказать, у меня не получилось запустить данный контейнер на моем macbook, получил ошибку:

(mysql-workbench-bin:19): Gtk-WARNING **: cannot open display: unix/private/tmp/com.apple.launchd.6iXsMbPJbh/org.macosforge.xquartz:0

Дубль 2, пробую выполнить все тоже, но на CentOS 6:

[root@puppet-agent captain]# docker run --privileged -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 workbench
No protocol specified

(mysql-workbench-bin:20): Gtk-WARNING **: cannot open display: :0
[root@puppet-agent captain]# xhost +local:root
non-network local connections being added to access control list
[root@puppet-agent captain]# xhost +local:captain
non-network local connections being added to access control list

ИЛИ, для всех юзеров:

# xhost +localhost

Но это не верное решение, берем свой eth0 ИП:

# xhost + $ip

Так же, пробросим переменную для дисплея:

# export DISPLAY=:0.0

После этого, запускаю:

[root@puppet-agent captain]# docker run --privileged -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 workbench

Вылезли другие ошибки… Посидел пару часов, я исправил ошибки на маке (описание решения, в самом низу статьи), ну а сейчас — я запускаю контейнер:

$ docker run -it -e DISPLAY=$ip:0 -v /tmp/.X11-unix:/tmp/.X11-uni workbench

Или (Но 1-й вариант лучше как по мне):

$ docker run --privileged --name firefox -e DISPLAY=$ip:0 -v /tmp/.X11-unix:/tmp/.X11-unix workbench

Получаю:

Запуск mysql-workbench в Docker

Шикарно! Все заработало!

-=== Запуск FireFox в Docker ===-

Существует несколько различных вариантов запуска GUI-приложений внутри Docker контейнера:

  • С использованием SSH с пересылкой X11
  • С использованием SSH с пересылкой VNC
  • Разделение сокетов между хостом и докер-контейнером

Самый простой способ — заключается в том, чтобы разделить мой сокет X11 с контейнером и использовать его напрямую. Идея довольно проста, и вы можете легко попробовать попробовать запустить контейнер Firefox, используя следующий файл Docker:

FROM ubuntu:14.04

RUN apt-get update && apt-get install -y firefox libcanberra-gtk-module packagekit-gtk3-module

# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

Запускаем:

$ docker build -t firefox .

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

docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
firefox

И вот что получилось:

Запуск FireFox в Docker

Данный пример приводился на CentOS 6, но у меня есть еще MacOS X и я бы хотел все же подружить все это дело!

Ставим пакет для MacOS X:

$ brew install caskroom/cask/xquartz

Запускаем:

$ open -a XQuartz

Открываем натройки, переходим во вкладку «security» и выставляем все галочки (2 шт):

Настройка Security в XQuartz

Идем далее:

$ ip=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
$ xhost + $ip

И, запускаем:

$ docker run -it -e DISPLAY=$ip:0 -v /tmp/.X11-unix:/tmp/.X11-uni firefox

Хочу добавить следующее, я много перерыл в интернете, но мало что полезного нашел. И да, вот как у меня выглядят конфигы ssh.

# cat /etc/ssh/ssh_config | grep -Ev "(#|^$)"

 Host *
   ForwardAgent yes
   ForwardX11 yes
Host *
	SendEnv LANG LC_*
Host *
    XAuthLocation /opt/X11/bin/xauth

И:

# cat /etc/ssh/sshd_config | grep -Ev "(#|^$)"

AuthorizedKeysFile	.ssh/authorized_keys
UsePAM yes
X11Forwarding yes
X11DisplayOffset 10
AcceptEnv LANG LC_*
Subsystem	sftp	/usr/libexec/sftp-server
XAuthLocation /opt/X11/bin/xauth

Приведу еще пример.

-=== Запуск spotify в Docker ===-

Выполняем:

$ ip=$(ifconfig eth1 | grep inet | awk '$1=="inet" {print $2}'| cut -c6-)
$ xhost + $ip

PS: У меня тут используется несколько интерфейсов, но я взял ИП с eth1.

Или, для MacOS X:

$ ip=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
$ xhost + $ip

Не буду собирать контейнер с Dockerfile, возьму готовый имедж:

$ # docker run --privileged --name spotify -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix jess/spotify

Я тут пробросил звуковое устройство во внутрь самого контейнера.

Запуск spotify в Docker

Вот это шайтаны додумались)))

На маке я пока не понял как это сделать 🙁

-=== Запуск wireshark в Docker ===-

Выполняем:

$ ip=$(ifconfig eth1 | grep inet | awk '$1=="inet" {print $2}'| cut -c6-)
$ xhost + $ip

PS: У меня тут используется несколько интерфейсов, но я взял ИП с eth1.

Или, для MacOS X:

$ ip=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
$ xhost + $ip

Или посмотреть все ИП на всех интерфейсах:

$ ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

 

Не буду собирать контейнер с Dockerfile, возьму готовый имедж:

$ docker run -ti --net=host --privileged --name wireshark1 -v $HOME:/root:rw -e XAUTHORITY=/root/.Xauthority -e DISPLAY=$ip:0 manell/wireshark

Получаем:

Запуск wireshark в Docker

Работает даже!

Полезная статья:

Утилита xhost в Unix/Linux

Вот и все, статья «Запуск GUI-приложения в Docker» завершена.

The post Запуск GUI-приложения в Docker first appeared on linux-notes.org.]]>
https://linux-notes.org/zapusk-gui-prilozhenij-v-docker/feed/ 0
Page_c76a3fcf https://linux-notes.org/ostanovit-udalit-vse-docker-kontejnery/ https://linux-notes.org/ostanovit-udalit-vse-docker-kontejnery/#comments Thu, 21 Jan 2016 22:03:58 +0000 http://linux-notes.org/?p=9830 Остановить/Удалить все Docker контейнеры/images Хотелось бы рассказать как можно остановить или удалить все Docker контейнеры. Если до сих пор не знаете как это сделать, тогда данная статья «Остановить/Удалить все Docker контейнеры» поможет вам. Остановить/Удалить все Docker контейнеры Ничего сложного тут нет, ниже приведены команды. Остановить все Docker контейнеры. # docker stop $(docker ps -a -q) […]

The post Остановить/Удалить все Docker контейнеры/images first appeared on linux-notes.org.]]>

Остановить/Удалить все Docker контейнеры/images

Хотелось бы рассказать как можно остановить или удалить все Docker контейнеры. Если до сих пор не знаете как это сделать, тогда данная статья «Остановить/Удалить все Docker контейнеры» поможет вам.

Остановить/Удалить все Docker контейнеры

Ничего сложного тут нет, ниже приведены команды.

Остановить все Docker контейнеры.

# docker stop $(docker ps -a -q)

Удалить все Docker контейнеры

# docker rm $(docker ps -a -q)

Опция –q (–quiet) — дает возможно узнавать  идентификаторы самих контейнеров с утилитой ps.

Так же, есть нативная команда чтобы удалить все неиспользуемые контейнеры с хоста:

$ yes| docker container prune

Удалить все Docker images

Смотрим что имеется в системе:

# docker images

И удаляем:

# docker rmi $(docker images -q)

Пример:

┌(vagrant@vagrant-ansible)─(✓)─(02:42 pm Wed Feb 01)
└─(~/magento2/php)─(2 files, 72Kb)─> sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              063421c62d7a        23 minutes ago      594 MB
nginx               test                dab545fbd9bf        2 days ago          182 MB
php                 7-fpm               65ec79b1c89d        7 days ago          377 MB
debian              jessie              e5599115b6a6        2 weeks ago         123 MB

┌(vagrant@vagrant-ansible)─(✓)─(02:51 pm Wed Feb 01)
└─(~/magento2/php)─(2 files, 72Kb)─> sudo docker rmi $(sudo docker images -q)
Deleted: sha256:063421c62d7ade9928ca666ad8dc0f07d5e546e1b53fc5bb89b5bcf36cdad9ea
Deleted: sha256:b0c6ccd75a1930b4e0cdb75aae28d962fe9b4cecd55aea2b8b0c3b365f08a78d
Deleted: sha256:0da8e714a17c186fcd351c53fe25ae4d0105b7ad267227a308e9926bea5d95da
Deleted: sha256:7e0a2e0026ee0f4ab26096ed0ca7594c267de67078657dd8dd6819e767b90b27
Untagged: nginx:test
Deleted: sha256:dab545fbd9bf2566a31ec47cee304d61e288eb598ea469a9de2afd79e523da1c
Deleted: sha256:e6da6fb03708a99307f2582d5ebb0e8dc47f63e98dfc063fdbac43f60e3b2578
Deleted: sha256:cf5aa7032eb791eaa23be959084274c611f60ea6a3b62281d9683dd67153dc85
Deleted: sha256:3aeae8a9989b76772293e0fdf179bfa6f7b7a82e31e6835e5bff57c4ba897c28
Deleted: sha256:e7014a4458090bf79716fc4670cbdad6cbc36525300f931b1f4ddb437f496033
Deleted: sha256:13adabc029b38e096c64bedd406b4eb1bb0314223e7996e0d58dbc9c923644e7
Deleted: sha256:22822c235b2309275ee5f79937adda468a54f7fab953257899eb232ef4612b13
Deleted: sha256:5be10d4710f377eb207186005d3e335abb64c33c140d615d24fcfa9a3cc2dfa5
Untagged: php:7-fpm
Untagged: php@sha256:9b2dbe7685c8c1c9ac43b567e1df3612cd2675da9ae637d0ff2c2c4025d51e6d
Deleted: sha256:65ec79b1c89dcec422e73d6f248323d1326ad026aef02955d4571ccbfe7bf91a
Deleted: sha256:5f37d22adac789b4d945118836e44069197935728890c89c9af64ac3f9842ff4
Deleted: sha256:e146e2a73bb94fa24068da8aab32eadb5e7f14224b542d137a4ac16fa1cdca27
Deleted: sha256:bf6af13fd9216a4193148d13627556c7cee7b18be4722f8ca3e4ea6775a2fdce
Deleted: sha256:72e066d4f36a2d40f1c8d1a0d9e77008c523c09ea8dd81df3407939a1e7d0d52
Deleted: sha256:dcb6b5b90fe5b308ce9be7913b426acd0d636c528277694e53e1f0198b5cf9a8
Deleted: sha256:9a3e5909a4fe6b3f447587787371ae79fd1ea2985287b06e4834b14a3baae769
Deleted: sha256:9a3e6283158eb52e55bcd8d3550724be68508a5994774337cac50526b6a171ff
Deleted: sha256:c1353703109f5062e4ccac91f2631464e113d94a811b1f6b95b46cbe2db6ecd4
Untagged: debian:jessie
Untagged: debian@sha256:abbe80c8c87b7e1f652fe5e99ff1799cdf9e0878c7009035afe1bccac129cad8
Deleted: sha256:e5599115b6a67e08278d176b05a3defb30e5564f5be6d73264ec560b484514a2
Deleted: sha256:a2ae92ffcd29f7ededa0320f4a4fd709a723beae9a4e681696874932db7aee2c

┌(vagrant@vagrant-ansible)─(✓)─(02:51 pm Wed Feb 01)
└─(~/magento2/php)─(2 files, 72Kb)─> sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

┌(vagrant@vagrant-ansible)─(✓)─(02:51 pm Wed Feb 01)
└─(~/magento2/php)─(2 files, 72Kb)─> 

Для удаления всех неиспользоваемых образов, можно использовать еще:

$ docker images -q |xargs docker rmi

Так же, можно:

$ docker rmi $(docker images | awk '{ print $3; }')

Вот еще отличный вариант:

$ docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")

Так же, есть нативная команда чтобы удалить все неиспользуемые images с хоста:

$ yes| docker image prune

Хочу отметить следующее — что имеется «-f» опция для того чтобы принудительно удалить docker образы (images)/ docker контейнеры:

# docker rmi -f $(docker images -q)

# docker rm -f $(ps docker -q -a)

Вот и все, все гениальное — просто! На этом, моя тема «Остановить/Удалить все Docker контейнеры» завершена.

The post Остановить/Удалить все Docker контейнеры/images first appeared on linux-notes.org.]]>
https://linux-notes.org/ostanovit-udalit-vse-docker-kontejnery/feed/ 5
Page_c76a3fcf https://linux-notes.org/ustanovka-docker-na-debian-ubuntu/ https://linux-notes.org/ustanovka-docker-na-debian-ubuntu/#respond Wed, 05 Aug 2015 18:11:30 +0000 http://linux-notes.org/?p=7317 Установка Docker на Debian/Ubuntu Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. В своей статье «Установка Docker на Debian/Ubuntu» я расскажу как можно установить Docker на Debian/Ubuntu, на примере Debian 7/8. Установка Docker на Debian/Linux Mint/Ubuntu -===Способ 1===- # cd /usr/local/src && wget -qO- https://get.docker.com/ | sh […]

The post Установка Docker на Debian/Ubuntu first appeared on linux-notes.org.]]>

Установка Docker на Debian/Ubuntu

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. В своей статье «Установка Docker на Debian/Ubuntu» я расскажу как можно установить Docker на Debian/Ubuntu, на примере Debian 7/8.

Установка Docker на Debian/Linux Mint/Ubuntu

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

# cd /usr/local/src && wget -qO- https://get.docker.com/ | sh

Поставит все само.

-===Способ 2===-

Чтобы установить docker CE, нужно использовать Ubuntu 14.04 или более новую версию.

Для начала, установим необходимое ПО:

# apt-get -y install apt-transport-https ca-certificates curl

Устанавливаем ключ:

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

Добавляем репозиторий:

# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Обновляем:

# apt-get update -y

Выполняем установку:

# apt-get -y install docker-ce

 

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

-===СПОСОБ 1 ===-

PS: можно скриптом!

Debian Jessie 8.0 (64-bit)

Чтобы установить Docker, используйте:

# apt-get update
# apt-get install docker.io

Debian Wheezy/Stable 7.x (64-bit)

Открываем файл:

# vim /etc/apt/sources.list

Добавьте следующую строку в него

[...]
deb http://http.debian.net/debian wheezy-backports main
[...]

Устанавливаем пакеты:

# apt-get update
# apt-get install -t wheezy-backports linux-image-amd64

Перезагрузите систему. Это необходимо чтобы Debian мог использовать новое ядро.

Установите docker помощью скрипта:

# curl -sSL https://get.docker.com/ | sh

Примечание: Если ваш сервер находится за прокси фильтрацией, вы можете обнаружить, что команде apt-key не удается получить ключ для докер репозитория во время установки. Чтобы обойти эту проблему, добавьте ключ непосредственно с помощью следующих действий:

$ wget -qO- https://get.docker.com/gpg | sudo apt-key add -

-===Способ 2===-

Чтобы установить docker CE, нужно использовать Debian 7.7 или более новую версию.

Для начала, установим необходимое ПО:

Jessie или Stretch:

# apt-get -y install apt-transport-https ca-certificates curl software-properties-common

Wheezy:

# apt-get -y install apt-transport-https ca-certificates curl python-software-properties

Устанавливаем ключ:

# curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Добавляем репозиторий:

# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Обновляем:

# apt-get update -y

Выполняем установку:

# apt-get -y install docker-ce

Удаление Docker на Debian/Ubuntu

Чтобы удалить пакет Docker, используйте:

# apt-get purge docker-io

ИЛИ:

# apt-get purge docker-ce

Чтобы удалить пакет Docker с зависимостями, которые больше не нужны:

# apt-get autoremove --purge docker-io

ИЛИ:

# apt-get autoremove --purge docker-ce

Эти команды не будет удалять images (образы), контейнеры, volumes (разделы), или созданные пользователем файлы конфигурации на вашем компьютере. Если вы хотите удалить все это, выполните:

$ rm -rf /var/lib/docker

Добавления пользователя

Доступ без root-а.

Докеровский демон всегда работает от пользователя root и демон (докера) связывается с Unix сокетом вместо TCP порта. По умолчанию, Unix сокет запущен от рутового пользователя, по этому можете открыть его с sudo.

Если вы (или ваш докер установщик) создадите группу с названием docker и добавите в нее пользователей, то докер демон будет иметь чтение/запись при запуске демона. По этому, если запустите docker клиента от созданного пользователя, то вам не нужно прописывать sudo для всех команд клиента. С докер версии 0.9.0 вы можете использовать флаг «-g»  чтобы указать альтернативную группу.

Внимание: docer группа или группы с указанным флагом «-G» будет иметь доступ как и у пользователя root.

Например:

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

# groupadd docker

Добавить пользователя «your_USER}» в группу докер (выше создал ее):

# gpasswd -a your_USER docker

ИЛИ

Если необходимо использовать Docker без sudo, то можно добавить пользователя в группу:

# usermod -aG docker your-user

Перезапустите демон докера:

# service docker restart

ИЛИ:

# systemctl start docker

Проверяем работоспособность:

# docker run hello-world

На экран вывидит информацию (что все установлено и работает) и завершится данная команда. На этому у меня все, тема «Установка Docker на Debian/Ubuntu» завершена.

The post Установка Docker на Debian/Ubuntu first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-docker-na-debian-ubuntu/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-mysql-v-kontejnere-na-docker/ https://linux-notes.org/ustanovka-mysql-v-kontejnere-na-docker/#respond Fri, 26 Dec 2014 12:00:50 +0000 http://linux-notes.org/?p=4392 Установка mysql в контейнере на Docker У меня есть пару статей на эту тему, мне очень нравится работать с данной технологией. Хочу в своей статье “Установка mysql в контейнере на Docker” описать процесс установки nginx внутри Docker. Надеюсь что у Вас уже установлен Docker, если нет, то можно установить его по моему мануалу: Установка Docker […]

The post Установка mysql в контейнере на Docker first appeared on linux-notes.org.]]>

Установка mysql в контейнере на Docker

У меня есть пару статей на эту тему, мне очень нравится работать с данной технологией.

Хочу в своей статье “Установка mysql в контейнере на Docker” описать процесс установки nginx внутри Docker. Надеюсь что у Вас уже установлен Docker, если нет, то можно установить его по моему мануалу:

Установка Docker на CentOS/RedHat/Fedora

Смотрим мои файлы на GitHub, и качаем их в папку себе:
https://github.com/SebastianUA/Docker/tree/master/docker_mariaDB_centos7

Переходим в папку и нужно будет собрать контейнер.

Сборка контейнера.
Когда все необходимое прописать в файл Dockerfile, можно приступить к сборке контейнера:

$ docker build -t mysql:base .

Лучше использовать:

$ docker build -rm -t captain/mysql:centos7 .

captain- пользователь (чтобы понимать кто создал контейнер).
mysql- говорит нам что в ОС есть mysql (чтобы не забыть).
centos7 – ОС.

После данной команды, начнется скачивание образа на CentOS и установки в него mysql. После завершения Вы должны увидеть ваш новый докер в имеющихся образах:

$ docker images

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

$ docker run -d  -p 3306:3306 captain/mysql:centos7

2266634b8051f4d1aecc61f3e56c0b6ec53445ffe39aa956b37043308132c764

Но есть одно но, необходимо переопределять (желательно):

/var/log/mysql/ -это логи самого mysql.
/var/lib/mysql/ -папка для mysql

То есть, должно запускаться следующим образом:

$ docker run -d -p 3307:3306 -v/var/log/mysql:/var/log/mysql/ captain/mysql:centos7

Как вы можете видеть, каждый раз когда вы запустите контейнер, Docker генерирует новый идентификатор для этого. Давайте посмотрим, если это действительно работает:

$ docker ps

Установка mysql в контейнере на Docker завершена.

The post Установка mysql в контейнере на Docker first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-mysql-v-kontejnere-na-docker/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-nginx-v-kontejnere-na-docker/ https://linux-notes.org/ustanovka-nginx-v-kontejnere-na-docker/#comments Tue, 23 Dec 2014 21:15:15 +0000 http://linux-notes.org/?p=4359 Установка nginx в контейнере на Docker Хочу в своей статье «Установка nginx в контейнере на Docker» описать процесс установки nginx внутри Docker. Надеюсь что у Вас уже установлен  Docker, если нет, то можно установить его по моему мануалу: Установка Docker на CentOS/RedHat/Fedora Есть несколько способов как это можно сделать: 1-й способ.  Это использование файла  Dockerfile […]

The post Установка nginx в контейнере на Docker first appeared on linux-notes.org.]]>

Установка nginx в контейнере на Docker

Хочу в своей статье «Установка nginx в контейнере на Docker» описать процесс установки nginx внутри Docker. Надеюсь что у Вас уже установлен  Docker, если нет, то можно установить его по моему мануалу:

Установка Docker на CentOS/RedHat/Fedora

Есть несколько способов как это можно сделать:

1-й способ. 

Это использование файла  Dockerfile  для создания конфигурационного файла, который создаст контейнер. В этом файле можно указать почти все параметры и так же любые команды. Я расскажу как можно это сделать, но поговорим немного о самой структуре данного файла.

Dockerfile

Этот файл похож на Gemfile, Vagrantfile или Berksfile. Это центральный кусок для создания контейнера Докер. Конечно, можно Docker запустить «docker run -i -t foo /bin/bash», а затем настроить контейнер. Но это не сильно удобно и не знаешь как оно все работает + с конфигурационном файлом вы можете воспроизвести тот же контейнер, снова и снова без возможного отклонения.

Я возьму сейчас минимальную конфигурацию для Dockerfile, которая даст возможность установить nginx  который будет работает в контейнере. Я объясню основы, пожалуйста, обратитесь к официальной документации Dockerfile для полного обзора (если потребуется).

FROM

Должна быть первая запись в вашем Dockerfile. Эта строчка сообщает Docker на базе которого дистрибутива  будит создан новой образ.

FROM centos

MAINTAINER

Если Вы выкладываете (публикуете) свои образы, то стоит прописать данную строку. Она даст возможность видеть кто автор данного образа или контейнера.

MAINTAINER Vitaly Natarov <solo.metal@bigmir.net>

ADD

Я поддерживаю кастомную сборку Nginx + ModSecurity для своих потребностей. Мне нужно извлечь файл конфигурации хранилища. Я буду все ставить именно с данного репозитория.

ADD http://static.theroux.ca/repository/failshell.repo /etc/yum.repos.d/

В основном, «ADD» позволяет извлекать файлы и скопировать их куда-нибудь в вашем контейнере.

RUN

Используется для настройки вашего контейнера. Вы можете установить столько, сколько вы хотите в вашем Dockerfile.

ПРИМЕЧАНИЕ: На данный момент, я не уверен, но, как я буду интегрировать Chef с Докер. Т.к не сильно много пользовательских конфигураций.

RUN yum -y install nginx

Обратите вниманиена foreground vs background

По пути к докеру, на вашем контейнере должна работать только одна служба. Вот и вся цель использования контейнеров в конце концов. Таким образом вы запускаете ваши услуги на передний план (foreground), но не наbackground. Вы в основном работаете с одной командой, это единственная цель вашего контейнера. Очень простодушный контейнер 🙂

Таким образом, мы должны сказать Nginx-у, чтобы он выполнил это!

RUN echo «daemon off;» >> /etc/nginx/nginx.conf

EXPOSE

Пробрасывает порты наружу.

EXPOSE 80

ПРИМЕЧАНИЕ: Это внутренний порт. Это будет отличаться один, который будет использоваться снаружи. Это назначается динамически Докер.

CMD

Сердце и душа вашего контейнера. Что он делает. Это цель жизни!

CMD /usr/sbin/nginx -c /etc/nginx/nginx.conf

Теперь я соберу все до  кучи:

# vim Dockerfile

Содержимое моего докерфайла:

FROM centos:centos7
MAINTAINER Vitaly Natarov <solo.metal@bigmir.net>

# Configure my repo to use my custom Nginx with modsec
RUN mkdir -p /usr/local/src
RUN cd /usr/local/src
RUN yum -y install wget vim htop tar

# install repo for centos
# epel repo
RUN rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# remi repo
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum repolist

# install nginx
RUN yum -y install nginx

# tell Nginx to stay foregrounded
ADD nginx.conf /etc/nginx/nginx.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN mkdir -p /var/www
RUN curl https://git.centos.org/sources/httpd/c7/acf5cccf4afaecf3afeb18c50ae59fd5c6504910 \
| tar -xz -C /var/www \
--strip-components=1
RUN sed -i -e 's/Apache/nginx/g' -e '/apache_pb.gif/d' \
/var/www/index.html

# expose HTTP
EXPOSE 80
EXPOSE 8080
EXPOSE 443

# Run
CMD [ "/usr/sbin/nginx" ]

Так же нужен конфиг с nginx. Я советую просто скачать мои конфиги, и, если не нравиться что-то, то просто поменять:
https://github.com/SebastianUA/Docker/tree/master/docker_nginx_centos7

PS: ссылки на репозитории могут уже не работать. По этому, их нужно будет поправить!

Сборка контейнера.

Когда все необходимое прописать в файл Dockerfile, можно приступить к сборке контейнера:

$ docker build -t nginx:base .

Я использую:

$ docker build -rm -t captain/nginx:centos7 .

captain- пользователь (чтобы понимать кто создал контейнер).
nginx- говорит нам что в ОС есть nginx (чтобы не забыть).
centos7 — ОС.

После данной команды, начнется скачивание образа на CentOS и установки в него nginx. После завершения Вы должны увидеть ваш новый докер в имеющихся образах:

$ docker images
doker images

doker images

Как видно на рисунке, что образ создан и готов к первому тестовому запуску.  Итак, запустим его:

$ docker run -d nginx:base

be8bc473c989a860225ca32fd96197e7dce5b8eeb3249ccac09820aa3bdc8f49

Но лучше указывать еще порт (можно так же указать и ИП адрес), но перед этим я указал имя:

$ docker run --name test-nginx -p 8080:80 -d nginx:base  /bin/bash

Я выполняю:

$ docker run -d -p 80:80 captain/nginx:centos7

Но есть одно но, необходимо переопределять (желательно):

  • /var/log/nginx/  -это логи самого  nginx.
  • /var/www/ — это домашняя папка для сайтов.
  • /etc/nginx/conf.d/ -папка с виртуальными хостами

То есть, должно запускаться следующим образом:

$ docker run -d -p 80:80 -v/var/log/nginx:/var/log/nginx/ captain/nginx:centos7

Как вы можете видеть, каждый раз когда вы запустите контейнер, Docker генерирует новый идентификатор для этого. Давайте посмотрим, если это действительно работает:

$ docker ps -a
docker ps -a

docker ps -a

На рисунке видны все созданные контейнера, чтобы увидеть запущенные контейнера, выполните:

$ docker ps

Наша контейнер  работает. С помощью curl проверим работу:

$ curl http://192.168.103.193

2-й способ.

Это использование готового контейнера на ОС (например, CentOS  или Debian\Ubuntu).

Суть такова:

  • Скачивается контейнер с ОС;
  • Запускается данный контейнер с bash желательно с проброшенным портом ( но можно исправить если забыли);
  • Устанавливается внутри самого контейнера nginx;
  • После чего можно сохранить данный образ для дальнейшего использования.

Этот способ самы простой, но он имеет достаточно большой обьем образа ( пока не нашел как его уменьшить).

Для сравнения :

  • Готовый образ контейнера с nginx ~92 Мб.
  • Готовый образ контейнера с  nginx (мой)~ 340Мб.

Я не думаю что нужно рассказывать как это сделать для данного примера ( я описывал в своей предыдущей статье).

Тема «Установка nginx в контейнере на Docker» завершина.

The post Установка nginx в контейнере на Docker first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-nginx-v-kontejnere-na-docker/feed/ 1
Page_c76a3fcf https://linux-notes.org/ustanovka-docker-na-centos-redhat-fedora/ https://linux-notes.org/ustanovka-docker-na-centos-redhat-fedora/#comments Mon, 22 Dec 2014 12:56:56 +0000 http://linux-notes.org/?p=4330 Установка Docker на  CentOS/RedHat/Fedora Docker – открытый движок, автоматизирующий развертывание приложений в легковесные, переносимые, самодостаточные контейнеры, которые могут без изменений переноситься между серверами. Тот же самый контейнер, который разработчик создает и тестирует на ноутбуке, может быть легко перенесен на продакшн-сервера в облако и так же легко смигрирован в другой регион при необходимости. Основные способы использования Docker: […]

The post Установка Docker на CentOS/RedHat/Fedora first appeared on linux-notes.org.]]>

Установка Docker на  CentOS/RedHat/Fedora

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.

-===Способ 2 — использовать официальный репозиторий===-

Устанавливаем необходимое ПО:

# 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), по этому нужно подключить EPEL репозиторий.

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

Если вы уже установили (не связанный) докер пакет, он будет конфликтовать с Docker-IO. Чтобы продолжить установку c Docker-IO, пожалуйста, удалите докер в первую очередь.

Далее, давайте установим docker-io пакет, который установит Docker:

$ 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

Или (CentOS 7/RHEL 7/Fedora 24-25):

# 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 -a

docker ps -a

На рисунке что выше при использовании команды «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 <id_контейнера> <имя_образа>

Перенос образа на другой хост
Например, вы уже все настроили (все ваши приложение в 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 <container_name>

Если необходимо остановить ваш контейнер, то воспользуйтесь:

$ docker stop <container_name>

Чтобы запустить ваш контейнер выполните:

$ docker start <container_name>

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

Чтобы посмотреть детали вашего контейнера используйте:

$ docker inspect <container_name>

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

$ docker rm <container_name>

Создаем (прописываем) имя хоста в своем контейнер:

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

Так же можно добавить параметр который добавит корректное имя вашего контейнера (я рассказывал это вверху).

Ложить/достать данные в контейнер?
Еси Вы хотите скопировать данные в контейнер или извлечь из него что то:

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

Например нужно скачать с контейнера некоторый файл и положить его в домашнюю директорию:

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

Удалить все образы «<none>»

$ for i in `sudo docker images|grep \<none\>|awk '{print $3}'`;do sudo docker rmi $i;done

Или

$ docker rmi $(docker images | grep "^<none>" | 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 адрес, то он будет слушать все ИП адреса.

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

Установка mysql в контейнере на Docker

Установка nginx в контейнере на Docker

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

Пользовательские варианты
Если вам нужно добавить прокси сервер или подробная работа докер с Systemd, а так же установить другой каталог или раздел для файлов во время выполнения Docker, или сделать другие настройки, то читайте документацию на официальном сайте Docker. Мне это не нужно было, по этому я не стал описывать подробно, но попозже я обязательно добавлю информацию по данной теме в этот раздел.

Установка 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. Надо быть членом этой группы, чтобы связаться с -d процессом Docker:

$ usermod -a -G docker login_name

Добавление пользователей в Докер группы не является необходимым для Docker версии 1.0 и выше.

Пользовательские варианты
Если вам нужно добавить прокси сервер или подробная работа докер с Systemd, а так же установить другой каталог или раздел для файлов во время выполнения Docker, или сделать другие настройки, то читайте документацию на официальном сайте Docker. Мне это не нужно было, по этому я не стал описывать подробно, но попозже я обязательно добавлю информацию по данной теме в этот раздел.

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

The post Установка Docker на CentOS/RedHat/Fedora first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-docker-na-centos-redhat-fedora/feed/ 1