Skip to content

Instantly share code, notes, and snippets.

@rtplv
Last active February 16, 2023 07:43
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save rtplv/c5422078dbcf79d076ebc740fdc92eb0 to your computer and use it in GitHub Desktop.
Save rtplv/c5422078dbcf79d076ebc740fdc92eb0 to your computer and use it in GitHub Desktop.
Небольшая шпаргалка для работы с Docker
version: '3.7'
services:
postgres:
build: ./postgres
restart: always
environment:
POSTGRES_PASSWORD: 12345
volumes:
- ./postgres/data:/var/lib/postgresql/data
pgadmin4:
image: dpage/pgadmin4
restart: always
ports:
- 1408:80
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: 12345

Установка

Docker

  1. Устанавливаем Docker CE

https://docs.docker.com/install/linux/docker-ce/ubuntu/

  1. Запускаем терминал и пробуем запустить тестовый образ:
docker run hello-world

Docker compose

  1. Устанавливаем Docker compose:

https://docs.docker.com/compose/install/

  1. Проверяем успешность установки командой:
docker-compose --version

Добавляем su-пользователя docker

Выполнять команды каждый раз из под sudo - утомительно. Это можно исправить. Следующей командой добавим пользователя rtplv в группу docker. Перезагружаем процесс докера:

sudo usermod -aG docker rtplv
sudo systemctl restart docker

Основные команды

Запуск образа

# daemon режим
docker run ubuntu -d
# интерактивный режим (запускаем bash)
docker run -it ubuntu bash

Список контейнеров

Запущенные

docker ps

Все

docker ps -a
# Получить список id контейнеров
docker ps -aq

Запуск, остановка контейнера

docker start containername
docker stop containername

Получение информация о контейнере

Общая информация

docker inspect containername

Дифы от начального состояния

docker diff containername

Лог контейнера

docker logs containername

Удаление контейнеров

docker rm -v $(docker ps -aq) # Все
docker rm -v $(docker ps -q) # Все активные
docker rm -v $(docker ps -aq -f status=exited) # Все неактивные

Удаляем "висячие образы"

docker rmi $(docker images -f "dangling=true" -q)

Кастомные образы

Создание образа

  1. Запускаем контейнер на основе образа Ubuntu:
docker run -it --name cow-container --hostname cow-server ubuntu bash
  1. Устанавливаем нужное нам добро, и выходим из контейнера.

  2. Собираем образ из нашего контейнера:

docker commit cow-container rtupolev/cow-game  # название образа: имя пользователя / название образа
  1. Теперь наш образ можно найти в docker images и запустить на основе него контейнер!
docker run rtupolev/cow-game cowsay "Hello"

Заливаем образ на docker hub

  1. Логинимся:
docker login
  1. Пушим:
docker push rtupolev/cow-game

Можно при push'е указать теги. Например - rtupolev/cow-game:beta

Используем docker-compose

Конфиг для билда контейнера

  1. Создаем Dockerfile:

Dockerfile:

FROM python:3

WORKDIR /home/python3/app

RUN pip install django

bash:

docker build -t django-container .

Основные команды

Создаем контейнер

docker-compose up -d

Остановка и удаление контейнеров

docker-compose down

Выполняем команду в контейнере

docker exec -it container_name bash

docker-compose.yml

Для соединения нескольких образом можно использовать docker-compose.yml.

Я не буду расписывать подробности касательно этого, а оставлю файлик-пример. А дальше сами, держитесь там.

@Feniksovich
Copy link

Годно 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment