build создать свой Docker контейнер

Содержание
Введение
Основы
Явно указать Dockerfile
Справка
Примеры контейнеров
Статьи про Docker

Введение

Частой задачей для настройки окружения является создание своих контейнеров.

Основы

Первым делом создайте файл с настройками Docker - Dockerfile и отредактируйте его, например, с помощью редактора vim

touch Dockerfile
vi Dockerfile

FROM debian RUN apt -y update

Теперь нужно собрать образ для этого и нужна команда build

docker build -t andrei-debian:1.0 .

-t это сокращение от --tag задаёт название и тэг в формате 'name:tag'

тэг можно не указывать - это опционально

. означает - в текущей директории

Проверить наличие этого образа в списке можно командой images

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE andrei-debian 1.0 034af79c78c2 4 minutes ago 142MB debian latest a11311205db1 27 hours ago 124MB

Появился скачанный образ debian и образ andrei-debian, только что созданный на его основе.

Теперь запустите его командой run

docker run --name debian1 andrei-debian:1.0

Контейнер запустится и сразу же выключится, потому что в нём нет никаких процессов

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 97f8baddbe9f andrei-debian:1.0 "bash" 6 seconds ago Exited (0) 5 seconds ago debian1

docker run -it --name debian1 andrei-debian:1.0

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

Откройте новый терминал и убедитесь, что статус контейнера Up

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e901ad90703c andrei-debian:1.0 "bash" 9 seconds ago Up 9 seconds debian1

Явно указать Dockerfile

Если в одной директории находится несколько докерфайлов можно явно указать какой из них следует использовать для сборки.

Для этого используется флаг -f

docker build -t andrei-debian:1.0 -f Dockerfile.debian .

Называть докерфайлы нужно в соответсвии с документацией :

Dockerfile.name

Например, я создаю свой образ на основе Ubuntu и с тестами на PyTest следующей командой

docker build --tag pytest_ubuntu:1.0 -f ./dockerfiles/Dockerfile.ubuntu .

Образ будет называться pytest_ubuntu и иметь тег 1.0

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE pytest_ubuntu 1.0 eb4761442740 About an hour ago 1.79GB

Справка

docker build --help

Usage: docker build [OPTIONS] PATH | URL | - Build an image from a Dockerfile Options: --add-host list Add a custom host-to-IP mapping (host:ip) --build-arg list Set build-time variables --cache-from strings Images to consider as cache sources --cgroup-parent string Optional parent cgroup for the container --compress Compress the build context using gzip --cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota -c, --cpu-shares int CPU shares (relative weight) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --disable-content-trust Skip image verification (default true) -f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile') --force-rm Always remove intermediate containers --iidfile string Write the image ID to the file --isolation string Container isolation technology --label list Set metadata for an image -m, --memory bytes Memory limit --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --network string Set the networking mode for the RUN instructions during build (default "default") --no-cache Do not use cache when building the image --pull Always attempt to pull a newer version of the image -q, --quiet Suppress the build output and print image ID on success --rm Remove intermediate containers after a successful build (default true) --security-opt strings Security options --shm-size bytes Size of /dev/shm -t, --tag list Name and optionally a tag in the 'name:tag' format --target string Set the target build stage to build. --ulimit ulimit Ulimit options (default [])

Примеры контейнеров
Ubuntu в контейнере на Windows 10
Создать контейнер с доступом по SSH
Создать контейнер с Nginx
Создать контейнер для Jenkins агента
Создать контейнер для PyTest
Создать контейнер для Swagger/OpenAPI
Похожие статьи
Docker
build: Создание контейнеров + примеры
Dockerfile
Ubuntu в контейнере на Windows 10
Контейнер с доступом по SSH
Контейнер с Nginx
Контейнер для Jenkins агента
Контейнер для PyTest
Контейнер для Swagger
Make

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: