Создание собственного образа

Образ whalesay можно улучшить. Было бы хорошо сделать так, что бы не нужно было печатать лишние фразы для запуска whalesay.

docker run docker/whalesay cowsay boo-boo

В этом уроке, вы улучшите образ whalesay, создав новую версию, которая будет "говорить" собственные фразы и требовать меньшего количества слов для запуска.

Шаг 1: Создание Dockerfile

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

  1. Откройте окно терминала.

  2. Создайте новую директорию mkdir mydockerbuild.

    $ mkdir mydockerbuild
    

    Этот каталог служит в качестве "контекста" для сборки. Контекст просто означает, что он содержит все, что вам нужно, чтобы построить свой образ.

  3. Войдите в созданную директорию.

    $ cd mydockerbuild
    

    Сейчас она пуста.

  4. Создайте Dockerfile в директории командой touch Dockerfile.

    $ touch Dockerfile
    

    Команда создает новый файл но ничего не выводит в консоль. Используйте команду ls Dockerfile что бы убедиться что файл создан.

    $ ls Dockerfile
    Dockerfile
    
  5. Откройте Dockerfile редакторе кода типа Atom или Sublime, или в текстовом редакторе, таком как vi, или nano (https://www.nano-editor.org/).

  6. Добавьте следующие строки:

    FROM docker/whalesay:latest
    

    Ключевое слово FROM говорит Docker какой образ будет базовым. Образ whalesay уже имеет программу cowsay по этому мы возьмем его за основу.

  7. Теперь добавим программу fortunes в наш образ.

    RUN apt-get -y update && apt-get install -y fortunes
    

    Программа fortunes имеет команду которая выводит мудрые фразы для нашего кита. Итак, первым шагом устанавливаем fortunes. Эта строка устанавливает программу в образ.

  8. После того как мы добавили в образ нужную нам программу, нужно добавить инструкцию запуска программы при старте контейнера.

      CMD /usr/games/fortune -a | cowsay
    

    Эта строка говорит программе fortune передать фразу программе cowsay.

  9. Теперь ваш Dockerfile должен выглядеть так:

    FROM docker/whalesay:latest
    RUN apt-get -y update && apt-get install -y fortunes
    CMD /usr/games/fortune -a | cowsay
    
  10. Сохраните и закройте Dockerfile.

    На этом этапе, в Dockerfile добавлены все необходимые программы и описано поведение. Вы готовы к созданию нового образа.

Шаг 2: Создание образа из Dockerfile

  1. Находясь в командной строке, убедитесь что Dockerfile расположен в текущем каталоге cat Dockerfile

    $ cat Dockerfile
    FROM docker/whalesay:latest
    
    RUN apt-get -y update && apt-get install -y fortunes
    
    CMD /usr/games/fortune -a | cowsay
    
  2. Теперь, соберем ваш новый образ набрав в терминале команду docker build -t docker-whale . (на забудьте точку через пробел в конце).

    $ docker build -t docker-whale .
    Sending build context to Docker daemon 158.8 MB
    ...snip...
    Removing intermediate container a8e6faa88df3
    Successfully built 7d9495d03763
    

    Выполнение команды занимает несколько секунд. Перед тем как вы начнете делать что либо с новым образом, уделите минуту что бы побольше узнать о процессе сборки образа из Dockerfile.

Шаг 3: Узнайте больше о процессе сборки

Команда docker build -t docker-whale . открывает Dockerfile в текущей директории, и создает образ docker-whale на вашем компьютере. Выполнение команды занимает около минуты и вывод команды выглядит действительно большим. В этом разделе вы узнаете что означают эти сообщения.

Первым делом Докер проверяет все ли необходимое есть для создания образа.

Sending build context to Docker daemon 158.8 MB

Затем, Docker загружает образ whalesay. У нас уже есть этот образ на локальном компьютере как вы можете помнить из предыдущего урока. Так что Docker не нужно скачивать его повторно.

Step 1 : FROM docker/whalesay:latest
 ---> fb434121fc77

Docker переходит к следующему шагу обновлению пакетного менеджера apt-get. В процессе выводится много строчек, нет нужды приводить их тут.

Step 2 : RUN apt-get -y update && apt-get install -y fortunes
 ---> Running in 27d224dfa5b2
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
Ign http://archive.ubuntu.com trusty-security InRelease
Hit http://archive.ubuntu.com trusty Release.gpg
....snip...
Get:15 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [14.8 kB]
Get:16 http://archive.ubuntu.com trusty-security/universe amd64 Packages [134 kB]
Reading package lists...
---> eb06e47a01d2

Затем Docker устанавливает fortunes.

Removing intermediate container e2a84b5f390f
Step 3 : RUN apt-get install -y fortunes
 ---> Running in 23aa52c1897c
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  fortune-mod fortunes-min librecode0
Suggested packages:
  x11-utils bsdmainutils
The following NEW packages will be installed:
  fortune-mod fortunes fortunes-min librecode0
0 upgraded, 4 newly installed, 0 to remove and 3 not upgraded.
Need to get 1961 kB of archives.
After this operation, 4817 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main librecode0 amd64 3.6-21 [771 kB]
...snip......
Setting up fortunes (1:1.99.1-7) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
 ---> c81071adeeb5
Removing intermediate container 23aa52c1897c

Итак, Docker завершает создание образа и сообщает об этом в консоль.

Step 4 : CMD /usr/games/fortune -a | cowsay
 ---> Running in a8e6faa88df3
 ---> 7d9495d03763
Removing intermediate container a8e6faa88df3
Successfully built 7d9495d03763

Шаг 4: Запуск нового образа

В этом шаге вы проверите образы на вашем компьютере, а за тем запустите ваш новый образ.

  1. Введите и выполните команду docker images в командной строке.

    Эта команда, как вы можете помнить, выводит список локальных образов в системе.

    $ docker images
    REPOSITORY           TAG          IMAGE ID          CREATED             SIZE
    docker-whale         latest       7d9495d03763      4 minutes ago       273.7 MB
    docker/whalesay      latest       fb434121fc77      4 hours ago         247 MB
    hello-world          latest       91c95931e552      5 weeks ago         910 B
    
  2. Запустите ваш новый образ командой docker run docker-whale.

    $ docker run docker-whale
     _________________________________________
    / "He was a modest, good-humored boy. It  \
    \ was Oxford that made him insufferable." /
     -----------------------------------------
              \
               \
                \     
                              ##        .            
                        ## ## ##       ==            
                     ## ## ## ##      ===            
                 /""""""""""""""""___/ ===        
            ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
                 \______ o          __/            
                  \    \        __/             
                    \____\______/   
    

Как вы можете видеть, мы сделали кита гораздо умнее. Он сам находит фразы для разговора и команда запуска стала гораздо короче. Также вы могли заметить что Docker не нужно было ничего скачивать, так как образ был построен на основе уже имеющегося.

Что дальше

В этом уроке мы научились строить собственный образ с помощью Dockerfile. Вы запустили свой образ в контейнере. В следующем уроке мы сделаем первые шаги для расшаривания образа, для этого перейдите в раздел создание аккаунта Docker Hub.

 


Комментарии:

Комментариев нет, желаете стать первым?

Пожалуйста, авторизуйтесь что бы оставлять комментарии.