Ubuntu
Docker is supported on these Ubuntu operating systems:
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Precise 12.04 (LTS)
This page instructs you to install using Docker-managed release packages and installation mechanisms. Using these packages ensures you get the latest official release of Docker. If you are required to install using Ubuntu-managed packages, consult the Ubuntu documentation.
Note: Ubuntu Utopic 14.10 and 15.04 exist in Docker’s APT repository but are no longer officially supported.
Prerequisites
Docker requires a 64-bit installation regardless of your Ubuntu version. Additionally, your kernel must be 3.10 at minimum. The latest 3.10 minor version or a newer maintained version are also acceptable.
Kernels older than 3.10 lack some of the features required to run Docker containers. These older versions have known bugs which cause data loss and frequently panic under certain conditions.
To check your current kernel version, open a terminal and use uname -r to display your kernel version:
Note: If you previously installed Docker using APT , make sure you update your APT sources to the new Docker repository.
Update your apt sources
Docker’s APT repository contains Docker 1.7.1 and higher. To set APT to use packages from the Docker repository:
Log into your machine as a user with sudo or root privileges.
Open a terminal window.
Update package information, ensure that APT works with the https method, and that CA certificates are installed.
Add the new GPG key.
Find the entry for your Ubuntu operating system.
The entry determines where APT will search for packages. The possible entries are:
Ubuntu version | Repository |
---|---|
Precise 12.04 (LTS) | deb https://apt.dockerproject.org/repo ubuntu-precise main |
Trusty 14.04 (LTS) | deb https://apt.dockerproject.org/repo ubuntu-trusty main |
Xenial 16.04 (LTS) | deb https://apt.dockerproject.org/repo ubuntu-xenial main |
Note: Docker does not provide packages for all architectures. Binary artifacts are built nightly, and you can download them from https://master.dockerproject.org. To install docker on a multi-architecture system, add an [arch=. ] clause to the entry. Refer to Debian Multiarch wiki for details.
Run the following command, substituting the entry for your operating system for the placeholder <REPO> .
Update the APT package index.
Verify that APT is pulling from the right repository.
When you run the following command, an entry is returned for each version of Docker that is available for you to install. Each entry should have the URL https://apt.dockerproject.org/repo/ . The version currently installed is marked with *** .The output below is truncated.
From now on when you run apt-get upgrade , APT pulls from the new repository.
Prerequisites by Ubuntu Version
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Trusty 14.04 (LTS)
For Ubuntu Trusty, and Xenial, it’s recommended to install the linux-image-extra-* kernel packages. The linux-image-extra-* packages allows you use the aufs storage driver.
To install the linux-image-extra-* packages:
Open a terminal on your Ubuntu host.
Update your package manager.
Install the recommended packages.
Go ahead and install Docker.
Ubuntu Precise 12.04 (LTS)
For Ubuntu Precise, Docker requires the 3.13 kernel version. If your kernel version is older than 3.13, you must upgrade it. Refer to this table to see which packages are required for your environment:
To upgrade your kernel and install the additional packages, do the following:
Open a terminal on your Ubuntu host.
Update your package manager.
Install both the required and optional packages.
Depending on your environment, you may install more as described in the preceding table.
Reboot your host.
After your system reboots, go ahead and install Docker.
Install
Make sure you have installed the prerequisites for your Ubuntu version.
Then, install Docker using the following:
Log into your Ubuntu installation as a user with sudo privileges.
Update your APT package index.
Start the docker daemon.
Verify docker is installed correctly.
This command downloads a test image and runs it in a container. When the container runs, it prints an informational message. Then, it exits.
Optional configurations
This section contains optional procedures for configuring your Ubuntu to work better with Docker.
Create a Docker group
The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it with sudo . For this reason, docker daemon always runs as the root user.
To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
Warning: The docker group is equivalent to the root user; For details on how this impacts security in your system, see Docker Daemon Attack Surface for details.
To create the docker group and add your user:
Log into Ubuntu as a user with sudo privileges.
Create the docker group.
Add your user to docker group.
Log out and log back in.
This ensures your user is running with the correct permissions.
Verify your work by running docker without sudo .
If this fails with a message similar to this:
Check that the DOCKER_HOST environment variable is not set for your shell. If it is, unset it.
Adjust memory and swap accounting
When users run Docker, they may see these messages when working with an image:
To prevent these messages, enable memory and swap accounting on your system. Enabling memory and swap accounting does induce both a memory overhead and a performance degradation even when Docker is not in use. The memory overhead is about 1% of the total available memory. The performance degradation is roughly 10%.
To enable memory and swap on system using GNU GRUB (GNU GRand Unified Bootloader), do the following:
Log into Ubuntu as a user with sudo privileges.
Edit the /etc/default/grub file.
Set the GRUB_CMDLINE_LINUX value as follows:
Save and close the file.
Reboot your system.
Enable UFW forwarding
If you use UFW (Uncomplicated Firewall) on the same host as you run Docker, you’ll need to do additional configuration. Docker uses a bridge to manage container networking. By default, UFW drops all forwarding traffic. As a result, for Docker to run when UFW is enabled, you must set UFW’s forwarding policy appropriately.
Also, UFW’s default set of rules denies all incoming traffic. If you want to reach your containers from another host allow incoming connections on the Docker port. The Docker port defaults to 2376 if TLS is enabled or 2375 when it is not. If TLS is not enabled, communication is unencrypted. By default, Docker runs without TLS enabled.
To configure UFW and allow incoming connections on the Docker port:
Log into Ubuntu as a user with sudo privileges.
Verify that UFW is installed and enabled.
Open the /etc/default/ufw file for editing.
Set the DEFAULT_FORWARD_POLICY policy to:
Save and close the file.
Reload UFW to use the new setting.
Allow incoming connections on the Docker port.
Configure a DNS server for use by Docker
Systems that run Ubuntu or an Ubuntu derivative on the desktop typically use 127.0.0.1 as the default nameserver in /etc/resolv.conf file. The NetworkManager also sets up dnsmasq to use the real DNS servers of the connection and sets up nameserver 127.0.0.1 in / etc/resolv.conf .
When starting containers on desktop machines with these configurations, Docker users see this warning:
The warning occurs because Docker containers can’t use the local DNS nameserver. Instead, Docker defaults to using an external nameserver.
To avoid this warning, you can specify a DNS server for use by Docker containers. Or, you can disable dnsmasq in NetworkManager. Though, disabling dnsmasq might make DNS resolution slower on some networks.
The instructions below describe how to configure the Docker daemon running on Ubuntu 14.10 or below. Ubuntu 15.04 and above use systemd as the boot and service manager. Refer to control and configure Docker with systemd to configure a daemon controlled by systemd .
To specify a DNS server for use by Docker:
Log into Ubuntu as a user with sudo privileges.
Open the /etc/default/docker file for editing.
Add a setting for Docker.
Replace 8.8.8.8 with a local DNS server such as 192.168.1.1 . You can also specify multiple DNS servers. Separated them with spaces, for example:
Warning: If you’re doing this on a laptop which connects to various networks, make sure to choose a public DNS server.
Save and close the file.
Restart the Docker daemon.
Or, as an alternative to the previous procedure, disable dnsmasq in NetworkManager (this might slow your network).
Open the /etc/NetworkManager/NetworkManager.conf file for editing.
Comment out the dns=dnsmasq line:
Save and close the file.
Restart both the NetworkManager and Docker.
Configure Docker to start on boot
Ubuntu uses systemd as its boot and service manager 15.04 onwards and upstart for versions 14.10 and below.
For 15.04 and up, to configure the docker daemon to start on boot, run
For 14.10 and below the above installation method automatically configures upstart to start the docker daemon on boot
Upgrade Docker
To install the latest version of Docker with apt-get :
Uninstallation
To uninstall the Docker package:
To uninstall the Docker package and dependencies that are no longer needed:
The above commands will not remove images, containers, volumes, or user created configuration files on your host. If you wish to delete all images, containers, and volumes run the following command:
You must delete the user created configuration files manually.
Feedback? Questions? Suggestions?
Edit this page, file a ticket, or rate this page:
Name already in use
docs / engine / install / ubuntu.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follow the installation steps.
Note
If you use ufw or firewalld to manage firewall settings, be aware that when you expose container ports using Docker, these ports bypass your firewall rules. For more information, refer to Docker and ufw.
To install Docker Engine, you need the 64-bit version of one of these Ubuntu versions:
- Ubuntu Lunar 23.04
- Ubuntu Kinetic 22.10
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
Docker Engine is compatible with x86_64 (or amd64), armhf, arm64, and s390x architectures.
Uninstall old versions
Before you can install Docker Engine, you must first make sure that any conflicting packages are uninstalled.
Distro maintainers provide an unofficial distributions of Docker packages in APT. You must uninstall these packages before you can install the official version of Docker Engine.
The unofficial packages to uninstall are:
- docker.io
- docker-compose
- docker-doc
- podman-docker
Moreover, Docker Engine depends on containerd and runc . Docker Engine bundles these dependencies as one bundle: containerd.io . If you have installed the containerd or runc previously, uninstall them to avoid conflicts with the versions bundled with Docker Engine.
Run the following command to uninstall all conflicting packages:
apt-get might report that you have none of these packages installed.
Images, containers, volumes, and networks stored in /var/lib/docker/ aren’t automatically removed when you uninstall Docker. If you want to start with a clean installation, and prefer to clean up any existing data, read the uninstall Docker Engine section.
You can install Docker Engine in different ways, depending on your needs:
Docker Engine comes bundled with Docker Desktop for Linux. This is the easiest and quickest way to get started.
Set up and install Docker Engine from Docker’s apt repository.
Install it manually and manage upgrades manually.
Use a convenience scripts. Only recommended for testing and development environments.
Install using the apt repository
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker repository. Afterward, you can install and update Docker from the repository.
Set up the repository
Update the apt package index and install packages to allow apt to use a repository over HTTPS:
Add Docker’s official GPG key:
Use the following command to set up the repository:
Note
If you use an Ubuntu derivative distro, such as Linux Mint, you may need to use UBUNTU_CODENAME instead of VERSION_CODENAME .
Install Docker Engine
Update the apt package index:
Install Docker Engine, containerd, and Docker Compose.
- Latest
- Specific version
To install the latest version, run:
To install a specific version of Docker Engine, start by listing the available versions in the repository:
Select the desired version and install:
Verify that the Docker Engine installation is successful by running the hello-world image.
This command downloads a test image and runs it in a container. When the container runs, it prints a confirmation message and exits.
You have now successfully installed and started Docker Engine.
Upgrade Docker Engine
To upgrade Docker Engine, follow the installation instructions, choosing the new version you want to install.
Install from a package
If you can’t use Docker’s apt repository to install Docker Engine, you can download the deb file for your release and install it manually. You need to download a new file each time you want to upgrade Docker Engine.
Select your Ubuntu version in the list.
Go to pool/stable/ and select the applicable architecture ( amd64 , armhf , arm64 , or s390x ).
Download the following deb files for the Docker Engine, CLI, containerd, and Docker Compose packages:
- containerd.io_<version>_<arch>.deb
- docker-ce_<version>_<arch>.deb
- docker-ce-cli_<version>_<arch>.deb
- docker-buildx-plugin_<version>_<arch>.deb
- docker-compose-plugin_<version>_<arch>.deb
Install the .deb packages. Update the paths in the following example to where you downloaded the Docker packages.
The Docker daemon starts automatically.
Verify that the Docker Engine installation is successful by running the hello-world image.
This command downloads a test image and runs it in a container. When the container runs, it prints a confirmation message and exits.
You have now successfully installed and started Docker Engine.
Upgrade Docker Engine
To upgrade Docker Engine, download the newer package files and repeat the installation procedure, pointing to the new files.
Uninstall Docker Engine
Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages:
Images, containers, volumes, or custom configuration files on your host aren’t automatically removed. To delete all images, containers, and volumes:
Установка Docker на Linux
На момент написания данной статьи существуют два разных издания Docker:
Docker Community Edition (DCE) — подходит для разработчиков и маленьких команд.
Docker Enterprise Edition (DEE) — подходит для использования большими командами в продакшене.
Docker Enterprise Edition также имеет разные издания:
Все примеры данного урока созданы с помощью Docker Community Edition, который является бесплатным.
Установка RPM-пакета Docker на Linux
На самом деле, процесс установки Docker довольно простой и понятный. Сейчас мы рассмотрим установку Docker из RPM-дистрибутива (сокр. от англ. «Red Hat Package Manager») операционной системы на базе Linux. К данным дистрибутивам относятся следующие:
В моем случае, это Fedora 31.
Сначала нам нужно добавить репозиторий Docker. Для этого устанавливаем пакет dnf-plugins-core , который позволяет управлять репозиториями из командной строки с помощью следующей команды:
sudo dnf -y install dnf-plugins-core
Далее добавляем стабильный репозиторий Docker:
sudo dnf config-manager —add-repo https://download.docker.com/linux/fedora/docker-ce.repo
После добавления репозиториев устанавливаем Docker с помощью следующей команды:
sudo dnf install docker-ce docker-ce-cli containerd.io
Если команда запросит подтверждение GPG-ключа (сокр. от англ. «GNU Privacy Guard»), то проверьте, совпадает ли фингерпринт со значением 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 . Если совпадает, то подтверждайте.
Fedora 31 может возвратить вам исключение CGroups , поэтому для решения данной проблемы вы должны включить обратную совместимость для CGroups следующей командой:
sudo grubby —update-kernel=ALL —args=»systemd.unified_cgroup_hierarchy=0″
Дальше вам нужно запустить daemon-сервис самого Docker:
sudo systemctl start docker
Чтобы проверить, что процесс установки прошел успешно, вы можете запустить следующую команду:
docker run hello-world
Последним шагом является добавление пользователя в группу Docker для возможности запуска Docker-команд без прав суперпользователя:
sudo usermod –aG docker $USER && newgrp docker
Поздравляю, вы успешно установили Docker на RPM-дистрибутив Linux!
Установка DEB-пакета Docker на Linux
Сейчас мы рассмотрим установку DEB-пакета Docker на Linux на примере Ubuntu 18.04 LTS, но эта инструкция также подойдет и для следующих дистрибутивов:
Ubuntu Eoan 19.10
Ubuntu Bionic 18.04 (LTS)
Ubuntu Xenial 16.04 (LTS)
Debian Stretch 9
Debian Buster 10
Также всё будет работать и на других Linux-дистрибутивах, которые основаны на вышеперечисленных.
Docker Community Edition доступен для следующих архитектур:
x86_64 (или amd64)
ppc64le (IBM Power)
Если вы уже когда-нибудь пробовали установить Docker, то у вас могли остаться старые и ненужные пакеты, для их удаления воспользуемся следующей командой:
sudo apt-get remove docker docker-engine docker.io containerd runc
Если у вас ничего не было установлено, то в терминале вы получите сообщение, что таких пакетов у вас нет:
При этом содержимое директории /var/lib/docker, где Docker хранит образы (images), контейнеры (containers), хранилища (volumes) и настройки сетей (networks), будут сохранены. Пакет Docker Engine Community сейчас называется docker-ce .
Есть 3 способа установки Docker CE в Ubuntu:
Способ №1: Настроить поддержку репозитория Docker и установить его оттуда.
Способ №2: Загрузить DEB-пакет и установить его вручную.
Способ №3: Воспользоваться автоматическими скриптами, которые позволяют установить Docker.
Сейчас мы рассмотрим установку Docker из репозиториев, так как этот способ наиболее безопасен и позволит обновлять Docker вместе с системой.
Итак, первым делом нам нужно добавить Docker-репозиторий — это место, где хранятся все нужные для установки Docker пакеты. Безопасность данного способа заключается в том, что эти репозитории имеют цифровую подпись, гарантирующую получение именно того пакета Docker, который нужен и ничего лишнего.
Для начала обновим список существующих репозиториев в системе:
sudo apt-get update
Далее установим пакеты:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Затем подтверждаем наши намерения символом y и нажимаем Enter :
После подтверждения получим следующий вывод:
Далее нам нужно добавить официальный GPG-ключ для Docker репозитория:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add —
После чего нажимаем Enter .
Проверяем цифровой отпечаток ключа 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 , сравнивая последние 8 символов с помощью следующей команды:
sudo apt-key fingerprint 0EBFCD88
Воспользуемся следующей командой, чтобы добавить стабильный репозиторий Docker:
sudo add-apt-repository \
«deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable»
После этого нам снова нужно обновить список репозиториев:
sudo apt-get update
И, собственно, устанавливаем сам Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io
После скачивания и установки Docker нам нужно добавить пользователя в группу Docker, чтобы иметь возможность использовать команды Docker без прав суперпользователя:
sudo usermod -aG docker $USER
Чтобы обновления в группах вступили в силу, воспользуемся следующей командой:
Проверяем, всё ли ок:
docker run hello-world
Если в терминале появились сообщения, указанные на скриншоте, расположенном выше, то вы успешно установили Docker на DEB-дистрибутив Linux!
Установка и использование Docker в Ubuntu 20.04
Docker — это приложение, упрощающее процесс управления процессами приложения в контейнерах. Контейнеры позволяют запускать приложения в процессах с изолированными ресурсами. Они похожи на виртуальные машины, но более портативные, более эффективно расходуют ресурсы и в большей степени зависят от операционной системы хоста.
Подробное описание различных компонентов контейнера Docker см. в статье Экосистема Docker: знакомство с базовыми компонентами.
В этом обучающем модуле мы установим и начнем использовать Docker Community Edition (CE) на сервере Ubuntu 20.04. Вы самостоятельно установите Docker, поработаете с контейнерами и образами и разместите образ в репозитории Docker.
Предварительные требования
Для выполнения этого руководства вам потребуется следующее:
- Один сервер Ubuntu 20.04, настроенный в соответствии с руководством по начальной настройке сервера Ubuntu 20.04, включая пользователя non-root user с привилегиями sudo и брандмауэр.
- Учетная запись на Docker Hub, если вы хотите создавать собственные образы и загружать их на Docker Hub, как показано в шагах 7 и 8.
Шаг 1 — Установка Docker
Пакет установки Docker, доступный в официальном репозитории Ubuntu, может содержать не самую последнюю версию. Чтобы точно использовать самую актуальную версию, мы будем устанавливать Docker из официального репозитория Docker. Для этого мы добавим новый источник пакета, ключ GPG от Docker, чтобы гарантировать загрузку рабочих файлов, а затем установим пакет.
Первым делом обновите существующий список пакетов:
Затем установите несколько необходимых пакетов, которые позволяют apt использовать пакеты через HTTPS:
Добавьте ключ GPG для официального репозитория Docker в вашу систему:
Добавьте репозиторий Docker в источники APT:
Потом обновите базу данных пакетов и добавьте в нее пакеты Docker из недавно добавленного репозитория:
Убедитесь, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:
Вы должны получить следующий вывод, хотя номер версии Docker может отличаться:
Обратите внимание, что docker-ce не установлен, но является кандидатом на установку из репозитория Docker для Ubuntu 20.04 (версия focal ).
Docker должен быть установлен, демон-процесс запущен, а для процесса активирован запуск при загрузке. Проверьте, что он запущен:
Вывод должен выглядеть примерно следующим образом, указывая, что служба активна и запущена:
После установки Docker у вас будет доступ не только к службе Docker (демон-процесс), но и к утилите командной строки docker или клиенту Docker. Мы узнаем, как использовать команду docker позже в этом обучающем руководстве.
Шаг 2 — Настройка команды Docker без sudo (необязательно)
По умолчанию команда docker может быть запущена только пользователем root или пользователем из группы docker, которая автоматически создается при установке Docker. Если вы попытаетесь запустить команду docker без префикса sudo или с помощью пользователя, который не находится в группе docker, то получите следующий вывод:
Если вы не хотите каждый раз вводить sudo при запуске команды docker , добавьте свое имя пользователя в группу docker :
Чтобы применить добавление нового члена группы, выйдите и войдите на сервер или введите следующее:
Вы должны будете ввести пароль вашего пользователя, чтобы продолжить.
Проверьте, что ваш пользователь добавлен в группу docker, введя следующее:
Если вам нужно добавить пользователя в группу docker , для которой вы не выполнили вход, объявите имя пользователя явно, используя следующую команду:
В дальнейшем в статье подразумевается, что вы запускаете команду docker от имени пользователя в группе docker. В обратном случае вам необходимо добавлять к командам префикс sudo .
Давайте перейдем к знакомству с командой docker .
Шаг 3 — Использование команды Docker
Использование docker подразумевает передачу ему цепочки опций и команд, за которыми следуют аргументы. Синтаксис имеет следующую форму:
Чтобы просмотреть все доступные субкоманды, введите:
Для 19-й версии Docker полный список субкоманд выглядит следующим образом:
Чтобы просмотреть параметры, доступные для конкретной команды, введите:
Чтобы просмотреть общесистемную информацию о Docker, введите следующее:
Давайте изучим некоторые из этих команд. Сейчас мы начнем работать с образами.
Шаг 4 — Работа с образами Docker
Контейнеры Docker получают из образов Docker. По умолчанию Docker загружает эти образы из Docker Hub, реестр Docker, контролируемые Docker, т.е. компанией, реализующей проект Docker. Любой может размещать свои образы Docker на Docker Hub, поэтому большинство приложений и дистрибутивов Linux, которые вам потребуется, хранят там свои образы.
Чтобы проверить, можно ли получить доступ к образам из Docker Hub и загрузить их, введите следующую команду:
Данный вывод говорит о том, что Docker работает корректно:
Docker первоначально не смог найти локальный образ hello-world , поэтому он загрузил образ из Docker Hub, который является репозиторием по умолчанию. После того как образ был загружен, Docker создал контейнер из образа, а приложение внутри контейнера было исполнено, отобразив сообщение.
Вы можете выполнять поиск доступных на Docker Hub с помощью команды docker с субкомандой search . Например, чтобы найти образ Ubuntu, введите:
Скрипт пробежится по Docker Hub и вернет список всех образов с именами, совпадающими со строкой запроса. В данном случае вывод будет выглядеть примерно следующим образом:
В столбце OFFICIAL OK указывает на образ, созданный и поддерживаемый компанией, реализующей проект. После того как вы определили образ, который хотели бы использовать, вы можете загрузить его на свой компьютер с помощью субкоманды pull .
Запустите следующую команду, чтобы загрузить официальный образ ubuntu на свой компьютер:
Вывод должен выглядеть следующим образом:
После того как образ будет загружен, вы сможете запустить контейнер с помощью загруженного образа с помощью субкоманды run . Как вы уже видели на примере hello-world , если образ не был загружен, когда docker выполняется с субкомандой run , клиент Docker сначала загружает образ, а затем запускает контейнер с этим образом.
Чтобы просмотреть образы, которые были загружены на ваш компьютер, введите:
Вывод команды должен выглядеть примерно следующим образом:
Как вы увидите далее в этом обучающем руководстве, образы, которые вы используете для запуска контейнеров, можно изменить и использовать для создания новых образов, которые затем могут быть загружены (помещены) на Docker Hub или другие реестры Docker.
Давайте более подробно рассмотрим, как запускаются контейнеры.
Шаг 5 — Запуск контейнеров Docker
Контейнер hello-world , который вы запустили на предыдущем шаге, служит примером контейнера, который запускается и завершает работу после отправки тестового сообщения. Контейнеры могут быть гораздо более полезными, чем в примере выше, а также могут быть интерактивными. В конечном счете они очень похожи на виртуальные машины, но более бережно расходуют ресурсы.
В качестве примера мы запустим контейнер с самым последним образом образ Ubuntu. Сочетание переключателей -i и -t предоставляет вам доступ к интерактивной командной оболочке внутри контейнера:
Необходимо изменить приглашение к вводу команды, чтобы отразить тот факт, что вы работаете внутри контейнера, и должны иметь следующую форму:
Обратите внимание на идентификатор контейнер в запросе команды. В данном примере это d9b100f2f636 . Вам потребуется этот идентификатор для определения контейнера, когда вы захотите его удалить.
Теперь вы можете запустить любую команду внутри контейнера. Например, сейчас мы обновим базу данных пакетов внутри контейнера. Вам не потребуется начинать любую команду с sudo , потому что вы работаете внутри контейнера как root-пользователь:
После этого вы можете установите любое приложение внутри контейнера. Давайте установим Node.js:
Эта команда устанавливает Node.js внутри контейнера из официального репозитория Ubuntu. После завершения установки проверьте, что Node.js был установлен успешно:
Вы увидите номер версии, отображаемый в терминале:
Любые изменения, которые вы вносите внутри контейнера, применяются только к контейнеру.
Чтобы выйти из контейнера, введите exit .
Далее мы рассмотрим управление контейнерами в нашей системе.
Шаг 6 — Управление контейнерами Docker
После использования Docker в течение определенного времени, у вас будет много активных (запущенных) и неактивных контейнеров на компьютере. Чтобы просмотреть активные, используйте следующую команду:
Вывод будет выглядеть примерно следующим образом:
В этом обучающем руководстве вы запустили два контейнера: один из образа hello-world и другой из образа ubuntu . Оба контейнера больше не запущены, но все еще существуют в вашей системе.
Чтобы просмотреть все контейнеры — активные и неактивные, воспользуйтесь командой docker ps с переключателем -a :
Вывод будет выглядеть следующим образом:
Чтобы просмотреть последний созданный вами контейнер, передайте переключатель -l :
Чтобы запустить остановленный контейнер, воспользуйтесь docker start с идентификатором контейнера или именем контейнера. Давайте запустим контейнер на базе Ubuntu с идентификатором 1c08a7a0d0e4 :
Контейнер будет запущен, а вы сможете использовать docker ps , чтобы просматривать его статус:
Чтобы остановить запущенный контейнер, используйте docker stop с идентификатором или именем контейнера. На этот раз мы будем использовать имя, которое Docker присвоил контейнеру, т.е. quizzical_mcnulty :
После того как вы решили, что вам больше не потребуется контейнер, удалите его с помощью команды docker rm , снова добавив идентификатор контейнера или его имя. Используйте команду docker ps -a , чтобы найти идентификатор или имя контейнера, связанного с образом hello-world , и удалить его.
Вы можете запустить новый контейнер и присвоить ему имя с помощью переключателя —name . Вы также можете использовать переключатель —rm , чтобы создать контейнер, который удаляется после остановки. Изучите команду docker run help , чтобы получить больше информации об этих и прочих опциях.
Контейнеры можно превратить в образы, которые вы можете использовать для создания новых контейнеров. Давайте посмотрим, как это работает.
Шаг 7 — Внесение изменений в контейнер для образа Docker
После запуска образа Docker вы можете создавать, изменять и удалять файлы так же, как и с помощью виртуальной машины. Эти изменения будут применяться только к данному контейнеру. Вы можете запускать и останавливать его, но после того как вы уничтожите его с помощью команды docker rm , изменения будут утрачены навсегда.
Данный раздел показывает, как сохранить состояние контейнера в виде нового образа Docker.
После установки Node.js внутри контейнера Ubuntu у вас появился контейнер, запускающий образ, но этот контейнер отличается от образа, который вы использовали для его создания. Но позже вам может снова потребоваться этот контейнер Node.js в качестве основы для новых образов.
Затем внесите изменения в новый экземпляр образа Docker с помощью следующей команды.
Переключатель -m используется в качестве сообщения о внесении изменений, которое помогает вам и остальным узнать, какие изменения вы внесли, в то время как -a используется для указания автора. container_id — это тот самый идентификатор, который вы отмечали ранее в этом руководстве, когда запускали интерактивную сессию Docker. Если вы не создавали дополнительные репозитории на Docker Hub, repository , как правило, является вашим именем пользователя на Docker Hub.
Например, для пользователя sammy с идентификатором контейнера d9b100f2f2f6 команда будет выглядеть следующим образом:
Когда вы вносите образ, новый образ сохраняется локально на компьютере. Позже в этом обучающем руководстве вы узнаете, как добавить образ в реестр Docker, например, на Docker Hub, чтобы другие могли получить к нему доступ.
Список образов Docker теперь будет содержать новый образ, а также старый образ, из которого он будет получен:
Вывод будет выглядеть следующим образом:
В данном примере ubuntu-nodejs является новым образом, который был получен из образа ubuntu на Docker Hub. Разница в размере отражает внесенные изменения. В данном примере изменение состояло в том, что NodeJS был установлен. В следующий раз, когда вам потребуется запустить контейнер, использующий Ubuntu с предустановленным NodeJS, вы сможете использовать новый образ.
Вы также можете создавать образы из Dockerfile , что позволяет автоматизировать установку программного обеспечения в новом образе. Однако это не относится к предмету данного обучающего руководства.
Теперь мы поделимся новым образом с другими, чтобы они могли создавать из него контейнеры.
Шаг 8 — Загрузка образов Docker в репозиторий Docker
Следующим логическим шагом после создания нового образа из существующего является предоставление доступа к этому образу нескольким вашим друзьям или всему миру на Docker Hub или в другом реестре Docker, к которому вы имели доступ. Чтобы добавить образ на Docker Hub или любой другой реестр Docker, у вас должна быть там учетная запись.
Данный раздел посвящен добавлению образа Docker на Docker Hub. Чтобы узнать, как создать свой собственный частный реестр Docker, ознакомьтесь со статьей Настройка частного реестра Docker на Ubuntu 14.04.
Чтобы загрузить свой образ, выполните вход в Docker Hub.
Вам будет предложено использовать для аутентификации пароль Docker Hub. Если вы указали правильный пароль, аутентификация должна быть выполнена успешно.
Примечание. Если ваше имя пользователя в реестре Docker отличается от локального имени пользователя, которое вы использовали при создании образа, вам потребуется пометить ваш образ именем пользователя в реестре. Для примера, приведенного на последнем шаге, вам необходимо ввести следующую команду:
Затем вы можете загрузить свой образ с помощью следующей команды:
Чтобы загрузить образ ubuntu-nodejs в репозиторий sammy, необходимо использовать следующую команду:
Данный процесс может занять некоторое время, необходимое на загрузку образов, но после завершения вывод будет выглядеть следующим образом:
После добавления образа в реестр он должен отображаться в панели вашей учетной записи, как на изображении ниже.
Если при попытке добавления возникает подобная ошибка, вы, скорее всего, не выполнили вход:
Выполните вход с помощью команды docker login и повторите попытку загрузки. Проверьте, появился ли образ на вашей странице репозитория Docker Hub.
Теперь вы можете использовать docker pull sammy / ubuntu-nodejs , чтобы загрузить образ на новый компьютер и использовать его для запуска нового контейнера.
Заключение
В этом обучающем руководстве вы установили Docker, поработали с образами и контейнерами, а также добавили измененный образ на Docker Hub. После знакомства с основами, вы можете переходить к другим обучающим руководствам Docker в сообществе.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.