Как установить и настроить Docker в Ubuntu 20.04 LTS

12 set 2022 9 min di lettura
Как установить и настроить Docker в Ubuntu 20.04 LTS
Indice dei contenuti

Введение

Docker — это программное обеспечение, упрощающее процесс управления процессами приложений в «контейнерах». Контейнеры позволяют запускать приложения в процессах, изолированных от ресурсов. Они аналогичны виртуальным машинам.

В этом руководстве мы установим и будем использовать Docker Community Edition (CE) в Ubuntu 20.04 LTS Focal Fossa.

Предпосылки

Прежде чем продолжить работу с этим учебным пособием, вы должны выполнить следующие предварительные условия:

Если вы хотите установить Docker на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Теперь вы подключены к своему серверу, вы готовы начать установку Docker.

Установить Докер

Docker доступен в официальном репозитории Ubuntu, но это может быть не последняя версия. Чтобы использовать последнюю версию, мы установим Docker из официального репозитория Docker.

Убедимся, что пакеты в системе обновлены до последних доступных версий:

sudo apt update

Установите некоторые необходимые пакеты, которые позволяют использовать пакеты через HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Добавьте ключ GPG для официального репозитория Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Добавьте репозиторий Docker:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Затем обновите базу данных с помощью недавно добавленного репозитория:

sudo apt update

Убедитесь, что вы добавили репозиторий Docker:

apt-cache policy docker-ce

Вы должны увидеть выходное сообщение, подобное следующему:

docker-ce:
 Installed: 5:19.03.9~3-0~ubuntu-focal
 Candidate: 5:19.03.9~3-0~ubuntu-focal
 Version table:
 *** 5:19.03.9~3-0~ubuntu-focal 500
 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
 100 /var/lib/dpkg/status

Наконец, установите Docker:

sudo apt install docker-ce docker-ce-cli containerd.io

Чтобы проверить статус Docker:

sudo systemctl status docker

Вы должны увидеть выходное сообщение, подобное следующему:

● docker.service - Docker Application Container Engine
 Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
 Active: active (running) since Thu 2020-05-21 23:09:38 CEST; 1min 56s ago
 TriggeredBy: ● docker.socket
 Docs: https://docs.docker.com
 Main PID: 28124 (dockerd)
 Tasks: 8
 Memory: 35.6M
 CGroup: /system.slice/docker.service
 └─28124 /usr/bin/dockerd -H fd://--containerd=/run/containerd/containerd.sock

Докер установлен правильно.

Запускать команды Docker без sudo

По умолчанию команду Docker может запускать только пользователь root или пользователь из группы docker, которая создается автоматически в процессе установки Docker.

Если вы не хотите вводить sudo каждый раз, когда запускаете команду docker, добавьте свое имя пользователя в группу docker следующим образом:

sudo usermod -aG docker ${USER}

Чтобы применить изменения к группе, выйдите из сервера и войдите снова или введите следующую команду:

su - ${USER}

Вам будет предложено ввести пароль пользователя, чтобы продолжить.

Подтвердите, что ваш пользователь добавлен в группу docker:

id -nG

Вы должны получить выходное сообщение, подобное следующему:

noviello sudo docker

Если вы хотите добавить в группу docker другого пользователя, с которым вы не связаны, введите следующую команду:

sudo usermod -aG docker nome_utente

Установите другую версию Docker

Чтобы установить конкретную версию, сначала перечислите все версии, доступные в репозитории Docker:

sudo apt update
sudo apt list -a docker-ce

Доступные версии Docker напечатаны во втором столбце. На момент написания этой статьи в официальных репозиториях Docker доступна только одна версия Docker ( 5:19.03.9~3-0~ubuntu-focal ).

docker-ce/focal 5:19.03.9~3-0~ubuntu-focal amd64

Установите определенную версию, добавив =<VERSION> после имени пакета:

sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> contain

При выпуске новой версии Docker пакеты можно обновить с помощью стандартной процедуры sudo apt update && sudo apt upgrade.

Заблокировать обновление Docker

Если вы хотите предотвратить обновление пакета Docker, отметьте его как удерживаемый:

sudo apt-mark hold docker-ce

Докер-команды

Мы будем использовать пользователя в группе докеров, поэтому нам не нужно будет использовать sudo. В противном случае, если вы не хотите использовать пользователя докера, добавьте команду с помощью sudo.

Общий синтаксис следующий:

docker [option] [command] [arguments]

Чтобы просмотреть все доступные подкоманды:

docker

Вы должны получить выходное сообщение, подобное следующему:


Management Commands:
 builder Manage builds
 config Manage Docker configs
 container Manage containers
 engine Manage the docker engine
 image Manage images
 network Manage networks
 node Manage Swarm nodes
 plugin Manage plugins
 secret Manage Docker secrets
 service Manage services
 stack Manage Docker stacks
 swarm Manage Swarm
 system Manage Docker
 trust Manage trust on Docker images
 volume Manage volumes

 Commands:
 attach Attach local standard input, output, and error streams to a running container
 build Build an image from a Dockerfile
 commit Create a new image from a container's changes
 cp Copy files/folders between a container and the local filesystem
 create Create a new container
 diff Inspect changes to files or directories on a container's filesystem
 events Get real time events from the server
 exec Run a command in a running container
 export Export a container's filesystem as a tar archive
 history Show the history of an image
 images List images
 import Import the contents from a tarball to create a filesystem image
 info Display system-wide information
 inspect Return low-level information on Docker objects
 kill Kill one or more running containers
 load Load an image from a tar archive or STDIN
 login Log in to a Docker registry
 logout Log out from a Docker registry
 logs Fetch the logs of a container
 pause Pause all processes within one or more containers
 port List port mappings or a specific mapping for the container
 ps List containers
 pull Pull an image or a repository from a registry
 push Push an image or a repository to a registry
 rename Rename a container
 restart Restart one or more containers
 rm Remove one or more containers
 rmi Remove one or more images
 run Run a command in a new container
 save Save one or more images to a tar archive (streamed to STDOUT by default)
 search Search the Docker Hub for images
 start Start one or more stopped containers
 stats Display a live stream of container(s) resource usage statistics
 stop Stop one or more running containers
 tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
 top Display the running processes of a container
 unpause Unpause all processes within one or more containers
 update Update configuration of one or more containers
 version Show the Docker version information
 wait Block until one or more containers stop, then print their exit codes

 Run 'docker COMMAND --help' for more information on a command.

Чтобы просмотреть системную информацию в Docker, используйте:

docker info

Работа с образами Docker

Контейнеры Docker создаются с помощью образов Docker. По умолчанию Docker извлекает эти образы из Docker Hub, реестра Docker, которым управляет Docker, компания, стоящая за проектом Docker. Любой может разместить свои образы Docker на Docker Hub.

Чтобы проверить, можете ли вы получить доступ и загрузить образы из Docker Hub, введите:

docker run hello-world

Вы должны получить выходное сообщение, подобное следующему:


Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world
 9bb5a5d4561a: Pull complete
 Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
 Status: Downloaded newer image for hello-world:latest

 Hello from Docker!
 This message shows that your installation appears to be working correctly.


Изначально Docker не может найти образ hello-world локально, поэтому он загружает образ из Docker Hub, который является репозиторием по умолчанию. Как только образ был загружен, Docker создал контейнер из образа, и приложение внутри контейнера запустилось, отображая сообщение.

Вы можете искать изображения, доступные в Docker Hub, с помощью команды docker с подкомандой поиска. Например, чтобы найти образ Ubuntu, введите:

docker search ubuntu

Скрипт просканирует Docker Hub и вернет список всех изображений, имя которых соответствует поисковой строке.

В этом случае вы должны получить выходное сообщение, подобное следующему:


NAME DESCRIPTION STARS OFFICIAL AUTOMATED
 ubuntu Ubuntu is a Debian-based Linux operating sys… 8984 [OK]
 dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 258 [OK]
 rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 190 [OK]
 consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 139 [OK]
 ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 95 [OK]
 ubuntu-upstart Upstart is an event-based replacement for th… 93 [OK]
 neurodebian NeuroDebian provides neuroscience research s… 55 [OK]
 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 48 [OK]
 ubuntu-debootstrap debootstrap --variant=minbase --components=m… 40 [OK]
 nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK]
 tutum/ubuntu Simple Ubuntu docker images with SSH access 18
 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 16
 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 13 [OK]
 ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12
 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 7 [OK]
 eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK]
 codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 5 [OK]
 darksheer/ubuntu Base Ubuntu Image -- Updated hourly 5 [OK]
 pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 2
 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK]
 smartentry/ubuntu ubuntu with smartentry 1 [OK]
 paasmule/bosh-tools-ubuntu Ubuntu based bosh-cli 0 [OK]
 ossobv/ubuntu Custom ubuntu image from scratch (based on o… 0
 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK]
 pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0

В ОФИЦИАЛЬНОМ столбце OK указывает на образ, созданный и поддерживаемый компанией, стоящей за проектом. После того, как вы определили образ, который хотите использовать, вы можете загрузить его на свой компьютер с помощью подкоманды pull.

Выполните следующую команду, чтобы загрузить официальный образ Ubuntu на свой компьютер или сервер:

docker pull ubuntu

Вы должны получить выходное сообщение, подобное следующему:


Using default tag: latest
 latest: Pulling from library/ubuntu
 6b98dfc16071: Pull complete
 4001a1209541: Pull complete
 6319fc68c576: Pull complete
 b24603670dc3: Pull complete
 97f170c87c6f: Pull complete
 Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
 Status: Downloaded newer image for ubuntu:latest

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

Чтобы просмотреть изображения, загруженные на ваш компьютер или сервер, введите:

docker images

Вы должны получить выходное сообщение, подобное следующему:


REPOSITORY TAG IMAGE ID CREATED SIZE
 ubuntu latest 93fd78260bd1 4 weeks ago 86.2MB
 hello-world latest 4ab4c602aa5e 3 months ago 1.84kB

Как мы увидим позже в этом руководстве, образы, которые вы используете для запуска контейнеров, можно редактировать и использовать для создания новых образов, которые затем можно загружать (вталкивать — это технический термин) в Docker Hub или другие журналы Docker.

Изображения можно редактировать и использовать для создания новых образов, которые затем можно загружать ( проталкивать ) в Docker Hub или другие регистры Docker.

Докер-контейнер

Контейнер hello-world, запущенный на предыдущем шаге, является примером контейнера, который запускается и автоматически закрывается после выдачи тестового сообщения. Контейнеры могут быть более сложными и интерактивными.

Попробуйте контейнер образа Ubuntu:

docker run -it ubuntu

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

root@3256a08e3b3c:/#

Следующие числа 3256a08e3b3c соответствуют идентификатору контейнера.

Теперь вы можете запустить любую команду внутри контейнера. Например, мы обновляем базу данных пакетов внутри контейнера. Вам не нужно добавлять sudo к каким-либо командам, потому что вы работаете внутри контейнера как пользователь root:

apt update

Таким образом, вы можете установить любое приложение, такое как Node.js:

apt install nodejs

Проверьте версию nodejs, которую вы только что установили:

nodejs -v

Вы должны получить выходное сообщение, подобное следующему:

v10.19.0

Любые изменения, сделанные в контейнере, применяются только к этому контейнеру.

Чтобы выйти из контейнера, введите exit в командной строке.

Давайте взглянем на следующее управление контейнерами в нашей системе.

Управление контейнером Docker

Чтобы просмотреть все активные контейнеры:

docker ps

Вы должны получить выходное сообщение, подобное следующему:


CONTAINER ID IMAGE COMMAND CREATED

Мы запустили два контейнера, hello-world и образ ubuntu. Оба контейнера больше не работают, но они все еще существуют в вашей системе.

Чтобы просмотреть все контейнеры, активные и неактивные, добавьте параметр -a к приведенной выше команде:

docker ps -a

Вы должны получить выходное сообщение, подобное следующему:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 90c1de9ca789 ubuntu "/bin/bash" 3 minutes ago Exited (130) 27 seconds ago dazzling_rubin
 46bfb1d8c68d hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago tender_roentgen

Чтобы просмотреть последний созданный контейнер, используйте команду -l:

Чтобы запустить остановленный контейнер, используйте docker start, за которым следует идентификатор или имя контейнера. Запустите контейнер на основе Ubuntu с идентификатором 90c1de9ca789:

docker start 90c1de9ca789

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

Чтобы остановить работающий контейнер, используйте docker stop, за которым следует идентификатор или имя контейнера.

Остановите контейнер, используя связанное имя:

docker stop dazzling_rubin

Чтобы удалить контейнер, вы можете использовать команду docker rm и сопоставить идентификатор или имя:

docker rm dazzling_rubin

Удалить Докер

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

Выполните следующие команды, чтобы остановить все запущенные контейнеры и удалить все объекты докеров:

docker container stop $(docker container ls -aq)
docker system prune -a --volumes

Теперь вы можете удалить Docker, как и любой другой пакет, установленный с помощью apt:

sudo apt purge docker-ce
sudo apt autoremove

Вывод

Установка и настройка Docker на Ubuntu 20.04 LTS Focal Fossa завершена. Дополнительные сведения о Docker см. в официальной документации Docker.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.