Docker - контейнеризация.

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

Стоит заметить также, что после выключения контейнера вся созданная информация, например, в базе данных MySQL будет потеряна, чтобы ее сохранить следует изначально примонтировать заранее созданный docker volume, либо директорию на выбор из системы хоста внутрь контейнера.

 отобразить список контейнеров

# docker ps -a

 включить контейнер и сделать маппинг порта хоста 3838 к порту контейнера 8080

# docker run -p 3838:8080 instancename:tag 

показать JSON файл настроек самого контейнера, включительно его переменные окружения

# docker inspect container-name || docker inspect container-id  

--name container-name - задает имя контейнеру 

-e VARIABLE_NAME=value - задает значение переменной окружения внутри контейнера

 -d запускает контейнер в детач режиме, чтобы он работал в фоне.

# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=set_here_your_password --name mysql-db mysql

посмотреть историю создания образа

#  docker history image-name

создание docker образа из файла Dockerfile с указанным в нем наборе файлов, к которым можно указать путь, ссылку, а так же задать с ключем -t имя:тег

#  docker build Dockerfile -t your-docker-hub-account-name/app

создать docker образ используя файл докера -f path/to/Dockerfile -t name - с заданным именем

#  docker build -t webapp-color -f webapp-color/Dockerfile 

создать образ docker используя Dockerfile, который находиться в текущей директории и указав его имя -t name

# docker build -t app . 

узнаем версию операционной системы образа "python:3.6"

# docker run python:3.6 cat /etc/*release* 

проверка размера образа

# docker images 

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE

app                                    latest                 fdd77dd5d          3 minutes ago        784MB

при каждом перезапуске docker контейнеру присваивается случайным образом новый IP адрес,  кроме того, docker имеет свой встроеный DNS сервер работающий с IP адресом 127.0.0.11 и может резолвить имена контейнеров благодаря этому.

проверить сети используемые докером

# docker network ls 

NETWORK ID          NAME                DRIVER              SCOPE

1ca00993                  bridge               bridge              local

8b838832                   host                 host                  local

b3dc15bf                   none                 null                  local

проверить информацию по сети bridge

# docker network inspect bridge

 запутсить контейнер с именем alpine-2 используя образ alpine и присоеденить к сети "none", то есть, оставить без сети

# docker run --name alpine-2 --network=none alpine 

создать новую сеть с именем wp-mysql-network используя драйвер bridge, выделить подсеть subnet 182.18.0.1/24 и сконфигурировать шлюз 182.18.0.1

# docker network create --driver bridge --subnet 182.18.0.1/24 --gateway 182.18.0.1 wp-mysql-network

 развернуть MySQL базу данных используя образ mysql:5.6 и задать имя mysql-db параметром --name,  присоединить к созданной сети wp-mysql-network ключем --network, передать значение переменной -e, и установить таким образом пароль MySQL 

# docker run -d -e MYSQL_ROOT_PASSWORD=db_password --name mysql-db --network wp-mysql-network mysql:5.6

 создать volume

# docker volume create name-of-volume

 отобразить список volume

# docker volume ls

отобразить информацию JSON файла volume

# docker volume inspect name-of-volume

удаление volume

# docker volume rm name-of-volume

запустить контейнер в детач режиме -d и примонтировать volume /opt/data к директории внутри контейнера /var/lib/mysql, а так же задать значение переменной в конейтере -e VARIABLE_NAME=value

# docker run -v /opt/data:/var/lib/mysql -d --name mysql-db -e MYSQL_ROOT_PASSWORD=set_here_your_password mysql

не забыть

# docker exec mysql-db mysql -pdb_password -e 'use databaseName; select * from tableName'

посмотреть логи

# docker logs --follow container-name


Комментарии