В данной статье разберём работу в Docker.
Для начала проведём установку:
yum install docker
Запустим сервис docker:
service docker start
Чтобы произвести поиск образов, выполним команду:
docker search centos
Данной командой мы выполнили поиск образов centos, и получили список доступных:
[root@local docker]# docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The official build of CentOS. 6370 [OK] docker.io docker.io/ansible/centos7-ansible Ansible on Centos7 132 [OK] docker.io docker.io/consol/centos-xfce-vnc Centos container with "headless" VNC sessi... 125 [OK] docker.io docker.io/jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos ... 117 [OK] docker.io docker.io/centos/systemd systemd enabled base container. 92 [OK] docker.io docker.io/centos/mysql-57-centos7 MySQL 5.7 SQL database server 87 docker.io docker.io/imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 58 [OK]
Чтобы скачать первый образ (centos), выполним команду:
docker pull centos
При успешной загрузке образа мы будем видеть следующее:
[root@local docker]# docker pull centos Using default tag: latest Trying to pull repository docker.io/centos ... latest: Pulling from docker.io/centos 45a2e645736c: Pull complete 1c3acf573616: Pull complete edcb61e55ccc: Pull complete cbae31bad30a: Pull complete aacbdb1e2a62: Pull complete fdeea4fb835c: Pull complete Digest: sha256:39eff7d56b96530d014083cd343f7314c23acbd1ecf37eb75a71a2f6584d0b02 Status: Downloaded newer image for docker.io/centos:latest
Если образы были скачаны ранее, посмотреть их можно командой:
docker images
Пример:
[root@local docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 300e315adb2f 5 weeks ago 209 MB docker.io/ansible/centos7-ansible latest 688353a31fde 4 years ago 447 MB
Чтобы запустить контейнер с нужным образом, выполним команду:
docker run -it centos /bin/bash
После чего мы сразу перейдём оболочку shell запущенного контейнера где можно проводить нужную работу:
[root@local docker]# docker run -it centos /bin/bash [root@434d7ed5f039 /]#
Так же, при запуске можно указывать дополнительные параметры, например для того чтобы пробросить порты, пробросить папку, ограничить ОЗУ и т.д.
Например, чтобы пробросить порты, мы должны указать ключ -P который пробросит все порты, или же через ключ -p указать только конкретный порт. Давайте откроем 80 порт для nginx:
docker run -it -p 8080:80 centos /bin/bash
Таким образом мы в запущенном контейнере для 80 порта открыли порт 8080 для внешнего мира.
Через docker мы можем пробросить папку с нашей машины в контейнер. Например, пробросим папку /var/www/html на локальной машине в контейнер:
docker run -it -v /var/www/html:/var/www/html centos /bin/bash
Теперь содержимое папки /var/www/html локальной машины будет идентично директории /var/www/html в контейнере.
Ограничим ресурсы для запускаемого контейнера. Например, чтобы разрешить использование CPU контейнера не более чем на 50%, выполним команду:
docker run -it --cpus=".5" centos /bin/bash
Если у Вас CPU 1 — то контейнер сможет его использовать только на 50%.
Чтобы ограничить память, укажем флаг —memory или -m:
docker run -it --memory=1024m centos /bin/bash
Данной командой мы указали, что контейнер может использовать память 1024мб, то есть — 1 Гб.
Подробнее об ограничениях ресурсов можно узнать в официальной документации: https://docs.docker.com/config/containers/resource_constraints/
Чтобы посмотреть активные контейнеры, используем команду:
docker ps -all
Мы получим вывод активных контейнеров и их статус:
[root@local docker]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 434d7ed5f039 centos "/bin/bash" 13 minutes ago Exited (130) 11 seconds ago compassionate_bartik
Обычно, при выходе из контейнера стандартными способами (exit, Ctrl+d) — контейнер останавливается. Чтобы не останавливать контейнер используем сочетание клавиш нажав ctrl+p и затем ctrl+q.
На этом пример работ с контейнерами docker закончен.