Docker
Docker helps developers build, share, run, and verify applications anywhere — without tedious environment configuration or management.
Docker помогает разработчикам создавать, совместно использовать, запускать и проверять приложения в любом месте — без утомительной настройки среды или управления ею.
Install Docker:
Скачать Docker:
Arch Linux:
sudo pacman -S docker
Debian/Ubuntu:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Container is a mini OS that can be published to other users. It stores your premade project which is very easy to share. The main advantage of this technology is that users do not have to manually configure the project, you just download the container and launch it in one click.
Контейнер - мини ос которую можно опубликовать для других пользователей. Он хранит ваш настроенный проект которым очень легко делиться. Главный плюс данной технологии - это необязательность пользователей ручной настройки проекта, вы просто скачиваете контейнер и запускаете его в один клик.
Image this is a lightweight, independent, executable set of programs that includes everything you need for the application to work: code, environment, system tools, libraries and settings. The image becomes a container at runtime when it is running on Docker.
Изображение - это легкий, независимый, исполняемый набор программ, который включает в себя все что нужно для работы приложения: код, окружение, системные инструменты, библиотеки и настройки. Изображение становится контейнером во время выполнения, когда он работает на Docker Engine.
Usage
Использование
Docker also has a UI version with an interface, but I advise you to learn how to use it through the terminal. Below I have listed the frequently used commands when working with Docker.
У Docker'а есть и UI версия с интерфейсом, но я советую научиться использовать через терминал. Ниже я привёл часто используемые комманды при работе с Docker.
run (start or create new container)
-i (keep container running even if it's not open)
-t (open in terminal)
--name [name] (gives a entered name to the container instead of random)
-p [localport:remoteport] (connects local port of container to remote for port forwarding)
[image_name/id] (make the container based on image)
rm [container_name/id] (stop and remove container)
stop [container_name/id] (stop container)
start [container_name/id] (start container)
-a (attach to container in terminal)
restart [container_name/id] (restart container)
kill [container_name/id] (not safe hard stop of a container)
images (shows all images)
-rm [image_name/id] (remove image, before deletion make sure local containers with this image shouldn't exist)
ps (shows running containers)
-a (shows all containers)
build (build new image)
-t [name] (gives name to the new image)
[path]
pull (clone/download repo)
[repo_name]
push (share/upload repo)
[repo_name] (ex: username/repo_name)
run (запускает или создаёт новый контейнер)
-i (держать запущенный контейнер, даже если он не открыт)
-t (открыть в терминале)
--name [имя] (указывает имя контейнера вместо случайного)
-p [локальный_порт:удалённый_порт] (подключает локальный порт контейнера к удалённому порту)
[имя_изображения/id] (создаёт новый контейнер с указанным изображением)
rm [имя_контейнера/id] (остановить и удалить контейнер)
stop [имя_контейнера/id] (остановить контейнер)
start [имя_контейнера/id] (запустить контейнер)
-a (подключиться к контейнеру в терминале)
restart [имя_контейнера/id] (перезапустить контейнер)
kill [имя_контейнера/id] (не безопасный, насильный способ остановить контейнер)
images (показать все изображения)
-rm [имя_контейнера/id] (удаляет контейнер, перед удалением убедитесь что все установленные контейнеры с этим изображением остановленны)
ps (показывает запущенные контейнеры)
-a (показать все контейнеры)
build (создать новое изображение)
-t [имя] (даёт имя изображению)
[путь]
pull (клонировать/скачать репозиторий)
[имя_репозитория]
push (поделиться/отправить репозиторий)
[имя_репозитория] (пример: имя_пользователя/имя_репозитория)
Dockerfile
Dockerfile is a config that helps to assemble a project, execute the necessary commands and greatly simplifies life. It is not required for a container, but it is very necessary for harder projects.
Dockerfile - это конфиг который помогает собрать проект, выполнить нужные команды и сильно упрощает жизнь. Он не обязателен для контейнера, но для не простых проектов очень нужен.
/path/to/your/project/Dockerfile:
/путь/к/вашему/проекту/Dockerfile:
FROM repo_name:version/tag (ex: user/app:3.10; python, what repo to install)
WORDKDIR path (ex: /code, /usr/src/app, selection of project root directory)
COPY path/from path/to (ex: ./ ./, selection of container project directory)
RUN command (ex: pip install -r requirements.txt; run command once on container creation)
CMD [command1,command2, ...] (ex: [python,main.py]; run command every time on container start)
EXPOSE port (ex: 8000; expose port for local network of container)
FROM имя_репозитория:версия/тэг (пример: python:3.10; какой репозиторий установить)
WORDKDIR путь (пример: /code, выбор корневой директории проекта)
COPY путь/откуда путь/куда (пример: ./ ./, выбор директории прокта в контейнере)
RUN комманда (пример: pip install -r requirements.txt; единожды запустить комманду при создании контейнера)
CMD [комманда1,комманда2, ...] (ex: [python,main.py]; запускать каждое включение контейнера)
EXPOSE порт (пример: 8000; прокинуть порт для локальной сети контейнера)