Docker

Docker

Качаем docker и устанавливаем

Ссылка на скачивание для windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows

На сайте: https://hub.docker.com/ можно скачать официальные и неофициальные images, которые можно устанавливать

Проверить установку и запуск docker можно командой:

docker info

Которая выводит информацию и по клиенту и по серверу, если все нормально установилось и запустилось, примерно так:

C:\Users\user>docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.7.1)
  compose: Docker Compose (Docker Inc., v2.2.3)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 20.10.12

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

Информация о контейнерах, обо всех

docker ps -a

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

docker run --name nginx1 -d -p 80:80 nginx

Эта команда скачивает image nginx, если его нет с docker hub, создает контейнер и запускает его

параметр —name nginx1 — задает ему имя nginx1

параметр -d указывает, что запустить нужно как daemon

параметр -p 80:80 указывает на проброску портов, первый порт — это хостовой машины, второй контейнера docker

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

docker rm <имя контейнера или ид>

Для того чтобы удалить и запущенные контейнеры, можно добавить ключик -f

docker rm -f <имя контейнера или ид>

Остановка контейнера

docker stop <название контейнера или ид>

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

docker start <название контейнера или ид>

Заморозка

docker pause <название контейнера или ид>

Разморозка

docker unpause <название контейнера или ид>

Информация о контейнере

docker inspect <название контейнера или ид>

Процессы внутри контейнера

docker tor <название контейнера или ид>

Мониторинг контейнеров

docker stats

Запуск контейнера с ограничением по памяти:

docker container run -d -p 80:80 --name proxy -m 10485760 nginx

Приатачиться к контейнеру

docker container attach <имя контейнера или ид>

Переименовать контейнер

docker container rename proxy proxy2

Информация о портах контейнера

docker container port <название контейнера или ид>

Получить логи контейнера

docker container logs <название контейнера или ид>

Как зайти в контейнер docker и что-нибудь там изменить

Для этого можно воспользоваться командой:

docker container exec -it <название контейнера или ид> bash

или

dockeer container exec -it <название контейнера или ид> /bin/sh

После этого можно, что-нибудь установить, например curl:

apt-get update && apt-get install curl -y

И запустить контейнер с проверкой, что он живой:

docker container run -d -p 80:80 --name proxy --health-cmd 'curl http://localhost:80/' --health-retries 3 --health-interval '1s' nginx

Скопировать данные внутрь контейнера

docker container cp ./data/*.html proxy:/usr/share/nginx/html
docker container cp ./data/css proxy:/usr/share/nginx/html/css

Работа с образами (images)

Вывести список образов

docker images

Скачать образ

docker pull <имя образа>
docker pull nginx:latest
docker pull nginx:1.21.6-alpine

Получить подробную информацию про образ

docker image inspect <название образа>

Получить информацию про слои

docker image history <name>
docker image history --no-trunc <name>

Для установки tag

docker image tag nginx test/nginx
docker image tag nginx test/nginx:0.0.1

Пуш образов в репозиторий

docker image push test/nginx
docker image push test/nginx:0.0.1

Создание образа из репозитория

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Удаление образа

docker image rm <название образа>

Работа с сетями в docker

Создание сети

docker network create frontend

Показать список сетей

docker network ls

Присоединить контейнер к сети

docker network connect frontend proxy

Отключить контейнер от сети

docker network disconnect frontend proxy

Информация о сети

docker network inspect frontend

Создать контейнер в определенной сети

docker container run -d -p 80:80 --name proxy --net frontend nginx

Удалить все неиспользуемые сети

docker network prune

Удалить сеть

docker network rm frontend

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

# Создаём сеть
docker network create frontend

# Запустить контейне с nginx.
docker container run -d --net frontend --net-alias search elasticsearch:2
docker container run -d --net frontend --net-alias search elasticsearch:2

# nslookup
docker container run --rm --net frontend alpine nslookup search

Работа с Volumes в docker

Создание Volume

docker volume create pgdata

Информация о Volume

docker volume inspect <название>

Вывести список Volume

docker volume ls

Удалить volume

docker volume rm <название>

Сборка образа при помощи Dockerfile

Пример Dockerfile

# Базовый образ с которого мы начнем создание своего собственного образа
FROM postgres

# Копируем файл
COPY db-backup.sh db-backup.sh

COPY cron-file.txt cron-file.txt

RUN apt-get update && apt-get install -y cron

RUN crontab cron-file.txt

RUN service cron start

Создание образа на основе Dockerfile

docker build . -t localhost:5000/postgres:0.0.1 -t localhost:5000/postgres:latest

Запуск при помощи docker compose

Запуск скрипта в файлике yml

docker-compose up -d

файлик по умолчанию называется: docker-compose.yml

Остановка

docker-compose down

Пример запуска Postgre через docker compose

Файл docker-compose.yml

version: '3.1'

services:

  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: pass
    volumes:
      - 'pgdata:/var/lib/postgresql/data'
  
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

volumes:
  pgdata:
    external: true

Запуск:

docker volume create pgdata
docker-compose up -d

Оставить комментарий