Образ - шаблон только для чтения
Реестры хранилище образов hub.docker.com
Контейнеры - создаются из образа и содержут все что надо для работы приложения
Установка docker
sudo yum install -y yum-utils \
device-mapper-persistent-data \ lvm2
yum-config-manager \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl enable docker systemctl start docker
Установка Docker compose
curl -L «https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)» -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose –version
Настройка системы
usermod -aG docker kirill
основные команды docker docker run -it debian bash - создание контейнера с интерактивным терминалом на базе образа debian и запустить интерпритатор bash (-it интерактив терминал ) docker run -it -h container.mkm debian bash - создание контейнера с указанным hostname docker run -it -h container.mkm –name container_kirilla debian bash
docker ps -a - просмотр всех контейнеров, в том числе и остановленных
docker images - посмотреть список всех образов
docker start nameconainer - запуск созданного контейнера по имени docker start idcontainer запуск созданного контейнера по id
docker inspect containername получение информации о контейнере по имени docker inspect containerid получение информации о контейнере по id
docker diff container_name - посмотерть изменения в котейнере
docker logs container_name - вывсти список событий контейнера
docker exec -it container_kirilla bash - зайти в контейнер
установим mc внутри контейнера
проверим чем отличаются нынешнее состояние контейнера от оригинального образа
docker diff blissful_tharp
docker ps -aq -f status=exited - вывод всех котнейнеров со стетусом exited
docker rm containername/containerid -удаление контейнера
docker rm $(docker ps -aq -f status=exited) - подстановка всех остановленных контейнеров в удаление
docker run -d bintami/apache -запускаем в фоновом режиме контейнер из образа bintami/apache с docker hub docker run -d httpd -запускаем в фоновом режиме контейнер из образа bintami/apache с docker hub docker ps -a смотрим испрльзуемые порты docker stop containername/containerid docker run -d -p 80:80 httpd - запуск с пробросом портов проброс порта осуществляется только при создании контейнера если там уже что-то переделано сохраняем в image и раскатываем заново docker exec -i -t
создание собственного образа в hub.docker.com
регистрируемся и создаем публичный или приватный репозиторий
создадим контейнер с правильными названием и хостнеймом
docker run -it –name mc –hostname mc.localhost centos bash
Внутри него установим и настроим нужный софт
превращаем контейнер в образ docker commit mc kmmorozov/mc логинимся на hub.docker.com docker login - логинимся docker push kmmorozov/mc - заливаем образ
для проверки удаляем все контейнеры и образы
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) docker rmi $(docker images -a -q)
docker run -it kmmorozov/mc bash
работа с dockerfile
создадим каталог с для проекта
mkdir myfirstapp
создадим файл с инструкциями
touch Dockerfile
FROM centos
RUN yum -y update && yum install mc -y
docker build -t kmmorozov/centosmc .
инструкция ENTRYPOINT
создадим папку для проекта counter
mkdir echo1
touch Dockerfile
docker build -t kmmorozov/echo1
Синтаксис файла https://dker.ru/docs/docker-engine/engine-reference/dockerfile-reference/
пример с апачем
mkdir apache
cd apache
touch Dockerfile
в папке проекта создаем папку ./public-html/ и там index.html с текстом
FROM httpd:2.4
MAINTAINER Kirill Morozov kmmorozov@gmail.com
COPY ./public-html/ /usr/local/apache2/htdocs/
docker build -t kmmorozov/apache
связка двух контейнеров phpmyadmin и mysql найдем mysql на dockerhub
docker run –name mymysql -e MYSQLROOTPASSWORD=123qaz -d mysql
docker run –name mymyadmin -d –link mymysql:db -p 8080:80 phpmyadmin/phpmyadmin