В предыдущем уроке мы объяснили, как установить Docker в CentOS. Сегодня мы увидим базовое использование Docker. Это руководство будет охватывать только основы, такие как создание нового контейнера, запуск контейнера, удаление контейнера и создание образа Docker из контейнера.
Основы Docker
Работа с Docker действительно интересна!
Вы узнаете, как сделать пару вещей с Докером.
Как я уже объяснял в предыдущем уроке, Docker Image – это файл, который решает, как должен себя вести контейнер, а Docker Container – это запущенный или остановленный этап изображения Docker.
Не путайте с изображениями Docker и Docker Containers.
1. Загрузить образ Docker
Чтобы загрузить обрах Docker для ОС Ubuntu, выполните следующую команду из терминала:
sudo docker pull ubuntu
Вышеупомянутая команда загрузит последний образ Ubuntu из Docker hub
Docker hub это облако, где все пользователи Docker создают, тестируют и сохраняют свои изображения Docker.
Пример вывода
Using default tag: latest latest: Pulling from library/ubuntu 759d6771041e: Pull complete 8836b825667b: Pull complete c2f5e51744e6: Pull complete a3ed95caeb02: Pull complete Digest: sha256:b4dbab2d8029edddfe494f42183de20b7e2e871a424ff16ffe7b15a31f102536 Status: Image is up to date for ubuntu:latest
ocker позволяет загружать любые образы и запускать контейнер независимо от ОС.
Могу ли я создать только контейнеры Ubuntu? Нет, вы можете создать любой контейнер по вашему выбору.
Например, чтобы создать гостевой компьютер CentOS (конечно, контейнер), выполните следующую команду:
sudo docker pull centos
Вы можете найти загруженные изображения Docker в каталоге / var / lib / docker /.
Чтобы просмотреть список загруженных изображений Docker, запустите:
sudo docker images
Пример вывода
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest b72889fa879c 35 hours ago 187.9 MB hello-world latest 690ed74de00f 6 months ago 960 B
Как вы видите выше, я загрузил два образ Docker.
Теперь давайте посмотрим, как запустить или запустить контейнеры.
Мы можем запустить контейнеры двумя способами. Мы можем запустить контейнер с помощью TAG или IMAGE ID.
Поскольку вы в приведенных выше результатах «последним» является TAG для обоих контейнеров, а b72889fa879c является идентификатором IMAGE Образ Ubuntu
Docker, а 690ed74de00f является идентификатором Образа hello_world Docker.
2. Запуск контейнеров Docker
После загрузки Образов Docker по вашему выбору выполните следующую команду, чтобы запустить контейнер Docker, используя его TAG.
sudo docker run -t -i ubuntu:latest /bin/bash
Где:
- -t: Назначает новый терминал внутри контейнера Ubuntu.
- -i: Позволяет нам сделать интерактивное соединение, захватив стандарт в (STDIN) контейнера.
- ubuntu:latest: контейнер Ubuntu с TAG «latest».
- / bin / bash: оболочка BASH для нового контейнера.
Или вы можете запустить контейнер с помощью IMAGE ID, как показано ниже:
sudo docker run -t -i b72889fa879c /bin/bash
Где:
- b72889fa879c – Image id
После запуска контейнера вы будете автоматически введены в оболочку Контейнера (Командная строка):
Чтобы вернуться обратно к терминалу хост-системы (я имею в виду Lubuntu 14.04 LTS) без остановки контейнера (guest os), нажмите CTRL + P, а затем CTRL + Q.
Теперь вы сможете вернуться обратно в окно терминала исходного компьютера.
Обратите внимание, что контейнер все еще работает, мы его не завершаем.
Чтобы просмотреть список контейнеров, выполните следующую команду:
sudo docker ps
Пример вывода
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 541256222acc ubuntu:latest "/bin/bash" 5 minutes ago Up 5 minutes sad_galileo
Чтобы перечислить все доступные (запущенные или остановленные) контейнеры:
sudo docker ps -a
Чтобы остановить (выключить контейнер) из оболочки хоста, выполните следующую команду:
sudo docker stop <container-id>
Пример:
sudo docker stop 541256222acc
Чтобы войти в систему или подключиться к работающему контейнеру, просто запустите:
sudo docker attach 541256222acc
Как вы уже знаете, 541256222acc – это идентификатор контейнера.
Чтобы отключить контейнер, запустите:
exit
3. Создайте свои пользовательские образа Docker
Docker предназначен не только для загрузки и использования существующих контейнеров.
Вы можете создать свой собственный образ, если хотите.
Для этого запустите любой загруженный контейнер:
sudo docker run -t -i ubuntu:latest /bin/bash
Теперь вы будете в оболочке контейнера.
Затем установите любое программное обеспечение или сделайте все, что вы хотите сделать в контейнере.
Например, давайте установим MySQL в контейнер
После того как вы сделали все настройки, установили все необходимые программные средства, выполните следующую команду, чтобы создать свой собственный образ:
apt-get install mysql-server mysql-client
Обратите внимание, что мы устанавливаем сервер MySQL и клиентские пакеты внутри контейнера, а не в хост-системе.
Введите новый пароль для пользователя root «root»:
Аналогичным образом, установите и протестируйте любое программное обеспечение по вашему выбору в контейнере.
После того, как вы все установили, вернитесь обратно в оболочку хост-системы.
Не останавливайте и не выключайте контейнер.
Чтобы переключиться на оболочку хост-системы без остановки контейнера, нажмите CTRL + P, а затем CTRL + Q.
В оболочке вашего компьютера запустите следующую команду, чтобы создать образ Docker запущенного контейнера.
sudo docker commit 12e892156219 ostechnix/ubuntu_mysql
Пример вывода
sha256:40d5bc9614a7b7c5cd9506421c91a11d23f0565b6ed9fb19dbcc0b1bafbdea3b
Где
- 12e892156219 – ID контейнера Ubuntu. Как вы уже знаете, мы можем найти идентификатор контейнера с командой «sudo docker ps».
- ostechnix – имя пользователя, создавшего контейнер.
- ubuntu_mysql – имя образа докера, созданного пользователем ostechnix.
Давайте проверим, создан ли новый образ Docker или нет с командой:
sudo docker images
Пример вывода
REPOSITORY TAG IMAGE ID CREATED SIZE ostechnix/ubuntu_mysql latest 40d5bc9614a7 3 minutes ago 317.7 MB ubuntu latest b72889fa879c 4 days ago 187.9 MB hello-world latest 690ed74de00f 6 months ago 960 B
Как вы видите в приведенном выше выпуске, новый образ Docker было создано в нашей локальной системе хостов из запущенного контейнера.
Теперь вы можете создать новый Контейнер из вновь созданного образа Docker, как обычно, для команды suing:
sudo docker run -t -i ostechnix/ubuntu_mysql /bin/bash
4. Удаление образов Docker и контейнеров
После того, как вы сделали все с образами Docker, вы можете удалить их, если вы их больше не хотите.
Для этого сначала нужно остановить (отключить) запущенные контейнеры.
Остановите запущенный контейнер, используя его ID:
sudo docker stop 12e892156219
Then, delete all downloaded Docker images using command.
To find the list of the Downloaded Docker images:
sudo docker ps
Пример вывода
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 12e892156219 ubuntu:latest "/bin/bash" 28 minutes ago Up 28 minutes goofy_easley
Остановите запущенный контейнер, используя его ID:
sudo docker stop 12e892156219
Исправление проблем
Иногда Docker не позволяет вам удалять изображения Docker.
Например, когда я пытаюсь удалить образ Docker с идентификатором b72889fa879c, я получил следующую ошибку:
Error response from daemon: conflict: unable to delete b72889fa879c (must be forced) - image is being used by stopped container dde4dd285377
Это связано с тем, что образ Docker, который вы хотите удалить, в настоящее время используется другим контейнером.
Итак, давайте проверим запущенный контейнер с помощью команды:
sudo docker ps
Нет запущенных контейнеров!
Давайте снова проверим все контейнеры (Запуск и останов) с помощью команды:
sudo docker ps -a
Пример вывода
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 12e892156219 ubuntu:latest "/bin/bash" About an hour ago Exited (137) 40 minutes ago goofy_easley 3a335b532ba2 b72889fa879c "/bin/bash" About an hour ago Exited (0) About an hour ago cranky_noether dde4dd285377 ubuntu:latest "/bin/bash" 2 days ago Exited (130) 2 days ago desperate_minsky d08bdc436693 b72889fa879c "/bin/bash" 3 days ago Exited (0) 3 days ago elated_gates 541256222acc ubuntu:latest "/bin/bash" 3 days ago Exited (0) 3 days ago sad_galileo 3792618c9f92 b72889fa879c "/bin/bash" 3 days ago Exited (0) 3 days ago elegant_panini 00f90d9b375f ubuntu:latest "/bin/bash" 3 days ago Exited (0) 3 days ago modest_goodall 98e6a091a773 hello-world "/hello" 3 days ago Exited (0) 3 days ago thirsty_mcclintock
Как вы видите, все еще некоторые остановленные контейнеры используют один из образов Docker. Итак, удалим все контейнеры.
sudo docker rm 12e892156219