Docker Образы
Введение
Образ Docker - это шаблон, доступный только для чтения, используемый для создания контейнеров.
Образы используются для хранения и отправки приложений.
Инструкция по работе с Docker от Beget.com
docker images
Список образов верхнего уровня, их теги, размеры и репозитории можно получить выполнив
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE andreyolegovichru/docker101tutorial latest dd2e76a16950 9 hours ago 26.8MB docker101tutorial latest dd2e76a16950 9 hours ago 26.8MB <none> <none> f5578f194936 9 hours ago 123MB <none> <none> 409d2b2d3c0b 9 hours ago 110MB <none> <none> c26bbf7dc236 9 hours ago 224MB python alpine fbfb63e3c6bb 17 hours ago 80.3MB nginx alpine ecd67fe340f9 4 days ago 21.6MB node 12-alpine 057fa4cc38c2 2 weeks ago 89.3MB hello-world latest bf756fb1ae65 6 months ago 13.3kB
Pull: скачивание образов
С помощью команды pull можно скачивать образы не запуская их.
Скачать образ с Ubuntu
docker pull ubuntu
Using default tag: latest latest: Pulling from library/ubuntu 692c352adcf2: Pull complete 97058a342707: Pull complete 2821b8e766f4: Pull complete 4e643cc37772: Pull complete Digest: sha256:55cd38b70425947db71112eb5dddfa3aa3e3ce307754a3df2269069d2278ce47 Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest
Проверить обновились ли образы
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE andreyolegovichru/docker101tutorial latest dd2e76a16950 19 hours ago 26.8MB docker101tutorial latest dd2e76a16950 19 hours ago 26.8MB <none> <none> f5578f194936 19 hours ago 123MB <none> <none> 409d2b2d3c0b 19 hours ago 110MB <none> <none> c26bbf7dc236 19 hours ago 224MB python alpine fbfb63e3c6bb 27 hours ago 80.3MB nginx alpine ecd67fe340f9 4 days ago 21.6MB ubuntu latest adafef2e596e 8 days ago 73.9MB node 12-alpine 057fa4cc38c2 2 weeks ago 89.3MB hello-world latest bf756fb1ae65 6 months ago 13.3kB
Если Вам нужен не последний образ а какая-то определённая версия - укажите её после двоеточия.
Например, если нужна Ubuntu 14.04
docker pull ubuntu:14.04
Удалить этот образ можно командой rmi
docker rmi ubuntu:14.04
Можно удалять не по имени, а с помощью IMAGE ID, например, если я хочу удалить образ hello-world IMAGE ID которого bf756fb1ae65
docker rmi bf756fb1ae65
Репозиторий образов hub.docker.com
Изучить список доступных образов можно на сайте
hub.docker.com
Нужно нажать на кнопку Explore в верхнем меню
hub.docker.com/search
Список выглядит следующим оригинальным образом:
Образов очень много, советую пользоваться поиском или фильтрами. Docker Certified означает официльный образ.
У официальных образов названия указаны просто:
debian
,
python
,
php
и так далее. Это называется «Top Level Image»
Если источник не подтверждён, например, если я сделаю какой-то образ, например приложение для сайта
TopBicycle.ru
то имя будет выглядеть так: andreyolegovich/topbicycle-ru
То есть сперва имя автора, затем имя образа. Не все компании верифицируют образы. Например,
софт для нагрузочного тестирования
Yandex Tank
выложен как direvius/yandex-tank
save: сохранить образ в архив
Если нужно сохранить образ в .tar файл, например, для передачи на другой хост
docker save aredelcom/aredel_browser_lite:27.0 > aredel_browser.tar
load: выгрузить образ из архива
Если вы получили образ в виде .tar файла, распаковать его можно командой load
docker load < /opt/aredel/containers/aredel_browser.tar
После загрузки образ будет иметь оригинальное название, а не название архива
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE aredelcom/aredel_browser_lite 27.0 736bd91205de 9 hours ago 1.0GB
tag: подставить нужный образ
У ваш софт пользуется определённым образом. Имя этого образа указано в настройках, например
в .toml файле. Вам нужно заменить его другим похожим образом, например, следующей версией.
Чтобы не менять постоянно название в настройках можно скачать второй образ и подставлять его
вместо первого командой tag
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE aredelcom/aredel_browser_lite 27.0 726bd91205de 9 hours ago 1.0GB aredel_browser latest 845d799ca1f0 3 weeks ago 1.04GB aredelcom/aredel_browser_lite 26.0 845d799ca1f0 3 weeks ago 1.04GB
Программой используется образ aredel_browser. В данный момент это образ версии 26.0 - можно убедиться посмотрев на
одинаковые ID.
Подставить 27-ю версию можно выполнив команду tag
docker tag aredelcom/aredel_browser_lite:27.0 aredel_browser
REPOSITORY TAG IMAGE ID CREATED SIZE aredel_browser latest 726bd91205de 9 hours ago 1.00GB aredelcom/aredel_browser_lite 27.0 726bd91205de 9 hours ago 1.0GB aredelcom/aredel_browser_lite 26.0 845d799ca1f0 3 weeks ago 1.04GB
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги
Публикация образов в Docker Hub
Сперва нужно создать аккаунт на докерхабе, сделать там репозиторий. Я назвал репозиторий jenkins-docker-slave так как делаю образ для работника Jenkins
Залогиниться в свой аккаунт можно командой docker login
docker login --username=andreissh
Password:
WARNING! Your password will be stored unencrypted in /home/andrei/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
Нужно написать
Dockerfile
и собрать образ командой
build
Пример такого докерфайла вы можете изучить
здесь
docker build -t jenkins-docker-slave:1.0 .
С помощью команды tag подготовим копии образа с названием в формате
репозиторий/образ:версия
docker tag jenkins-docker-slave:1.0 andreissh/jenkins-docker-slave:1.0
docker tag jenkins-docker-slave:1.0 andreissh/jenkins-docker-slave:latest
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE andreissh/jenkins-docker-slave 1.0 0aebbb7255ed 5 minutes ago 915MB andreissh/jenkins-docker-slave latest 0aebbb7255ed 5 minutes ago 915MB jenkins-docker-slave 1.0 0aebbb7255ed 5 minutes ago 915MB
Отправить образ на докерхаб можно командой docker push
docker push andreissh/jenkins-docker-slave:1.0
The push refers to repository [docker.io/andreissh/jenkins-docker-slave] 5e67247e476e: Pushed 5834b8278bb9: Pushed 6b4ad81eb09a: Pushed 1b0c531a1de3: Pushed 77f335c4dfa4: Pushed 3d9a7ec04e48: Pushed 6515074984c6: Mounted from library/ubuntu 1.0: digest: sha256:2986eb4bd51548889f2e6eaa18b649cfeef9d2a783811812f7771af56c1f61fd size: 1783
docker push andreissh/jenkins-docker-slave:latest
The push refers to repository [docker.io/andreissh/jenkins-docker-slave] 5e67247e476e: Layer already exists 5834b8278bb9: Layer already exists 6b4ad81eb09a: Layer already exists 1b0c531a1de3: Layer already exists 77f335c4dfa4: Layer already exists 3d9a7ec04e48: Layer already exists 6515074984c6: Layer already exists latest: digest: sha256:2986eb4bd51548889f2e6eaa18b649cfeef9d2a783811812f7771af56c1f61fd size: 1783
Образы должны появиться в хабе
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги
Удалить образ
Чтобы удалить образ нужно выполнить команду
docker rmi image_id
Где image_id это полный или частичный IMAGE ID образа.
docker rmi 07c45e16bf36
Если IMAGE ID, начинающийся на 07c всего один, достаточно написать
docker rmi 07c
Удалить образ можно по имени REPOSITORY
docker rmi jenkins_nginx_mkdocs-mkdocs:latest
Форсированное удаление выполняется с помощью флага --force
docker rmi --force 8d788d646766
Удалить все образы
Массовые удаление и остановка контейнеров и образов разобраны
здесь
Пример для
Linux
docker rmi $(docker images -q)