• Начало
  • Помощь
  • Поиск
  • Вход
  • Регистрация

Новости: Реконструкция сайта http://crimeaion.pp.ua
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

  • Crimeaion »
  • High End »
  • Linux »
  • Шпаргалка с командами Docker
« предыдущая тема следующая тема »
  • Печать
Страницы: [1]   Вниз

Автор Тема: Шпаргалка с командами Docker  (Прочитано 562 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Шпаргалка с командами Docker
« : 05 Октябрь 2020, 20:13:19 »
Поиск образа
Код: [Выделить]
docker search imk
Скачать образ
Код: [Выделить]
docker pull imk
Список образов
Код: [Выделить]
docker images
Удаление образа
Код: [Выделить]
docker rmi imk
Получение информации о контейнерах

Работающие контейнеры
Код: [Выделить]
docker ps
Работающие контейнеры когда либо были запущиные
Код: [Выделить]
docker ps -a
Запуск и остановка контейнеров

Запуск остановленного контейнера
Код: [Выделить]
docker start imk
Остановка
Код: [Выделить]
docker stop imk
Перезагрузка
Код: [Выделить]
docker restart imk
Пауза (приостановка всех процессов контейнера)
Код: [Выделить]
docker pause  imk
Снятие паузы
Код: [Выделить]
docker unpause  imk
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #1 : 15 Октябрь 2020, 11:33:59 »
Что такое Docker Compose?
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения. Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными приложениями.

Создание проекта

Для того чтобы построить ваше первое клиент-серверное приложение, предлагаю начать с создания папки проекта. Она должна содержать следующие файлы и папки:

    Файл docker-compose.yml. Это файл Docker Compose, который будет содержать инструкции, необходимые для запуска и настройки сервисов.
    Папка server. Она будет содержать файлы, необходимые для обеспечения работы сервера.
    Папка client. Здесь будут находиться файлы клиентского приложения.

В результате содержимое главной папки вашего проекта должно выглядеть так:
Код: [Выделить]
.
├── client/
├── docker-compose.yml
└── server/
2 directories, 1 file

Создание файлов


Перейдите в папку server и создайте в ней следующие файлы:

    Файл server.py. В нём будет находиться код сервера.
    Файл index.html. В этом файле будет находиться фрагмент текста, который должно вывести клиентское приложение.
    Файл Dockerfile. Это — файл Docker, который будет содержать инструкции, необходимые для создания окружения сервера.


Вот как должно выглядеть содержимое вашей папки server/:
Код: [Выделить]
.
├── Dockerfile
├── index.html
└── server.py
0 directories, 3 files

Редактирование Python-файла

Добавим в файл server.py следующий код:
Код: [Выделить]
#!/usr/bin/env python3

# Импорт системных библиотек python.
# Эти библиотеки будут использоваться для создания веб-сервера.
# Вам не нужно устанавливать что-то особенное, эти библиотеки устанавливаются вместе с Python.

import http.server
import socketserver

# Эта переменная нужна для обработки запросов клиента к серверу.

handler = http.server.SimpleHTTPRequestHandler

# Тут мы указываем, что сервер мы хотим запустить на порте 1234.
# Постарайтесь запомнить эти сведения, так как они нам очень пригодятся в дальнейшем, при работе с docker-compose.

with socketserver.TCPServer(("", 1234), handler) as httpd:

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

   httpd.serve_forever()
Этот код позволяет создать простой веб-сервер. Он будет отдавать клиентам файл index.html, содержимое которого позже будет выводиться на веб-странице.

Редактирование HTML-файла

В файл index.html добавим следующий текст:
Код: [Выделить]
Docker-Compose is magic!
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #2 : 15 Октябрь 2020, 12:34:18 »
Редактирование файла Dockerfile

Сейчас мы создадим простой файл Dockerfile, который будет отвечать за организацию среды выполнения для Python-сервера. В качестве основы создаваемого образа воспользуемся официальным образом, предназначенным для выполнения программ, написанных на Python. Вот содержимое Dockerfile:

Цитировать
# На всякий случай напоминаю, что Dockerfile всегда должен начинаться с импорта базового образа.
# Для этого используется ключевое слово 'FROM'.
# Здесь нам нужно импортировать образ python (с DockerHub).
# В результате мы, в качестве имени образа, указываем 'python', а в качестве версии - 'latest'.
# FROM python:latest
FROM python:3

# Для того чтобы запустить в контейнере код, написанный на Python, нам нужно импортировать файлы 'server.py' и 'index.html'.
# Для того чтобы это сделать, мы используем ключевое слово 'ADD'.
# Первый параметр, 'server.py', представляет собой имя файла, хранящегося на компьютере.
# Второй параметр, '/server/', это путь, по которому нужно разместить указанный файл в образе.
# Здесь мы помещаем файл в папку образа '/server/'.

ADD server.py /server/
ADD index.html /server/

# Здесь мы воспользуемся командой 'WORKDIR', возможно, новой для вас.
# Она позволяет изменить рабочую директорию образа.
# В качестве такой директории, в которой будут выполняться все команды, мы устанавливаем '/server/'.

WORKDIR /server/
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #3 : 15 Октябрь 2020, 13:18:53 »
Создание клиента

Перейдите в папку вашего проекта client и создайте в ней следующие файлы:

    Файл client.py. Тут будет находиться код клиента.
    Файл Dockerfile. Этот файл играет ту же роль, что и аналогичный файл в папке сервера. А именно, он содержит инструкцию, описывающую создание среды для выполнения клиентского кода.


В результате ваша папка client/ на данном этапе работы должна выглядеть так:
Код: [Выделить]
.
├── client.py
└── Dockerfile
0 directories, 2 files
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #4 : 15 Октябрь 2020, 13:27:06 »
Редактирование Python-файла

Добавим в файл client.py следующий код:

Цитировать
#!/usr/bin/env python3

# Импортируем системную библиотеку Python.
# Она используется для загрузки файла 'index.html' с сервера.
# Ничего особенного устанавливать не нужно, эта библиотека устанавливается вместе с Python.

import urllib.request

# Эта переменная содержит запрос к 'http://localhost:1234/'.
# Возможно, сейчас вы задаётесь вопросом о том, что такое 'http://localhost:1234'.
# localhost указывает на то, что программа работает с локальным сервером.
# 1234 - это номер порта, который вам предлагалось запомнить при настройке серверного кода.

fp = urllib.request.urlopen("http://localhost:1234/")

# 'encodedContent' соответствует закодированному ответу сервера ('index.html').
# 'decodedContent' соответствует раскодированному ответу сервера (тут будет то, что мы хотим вывести на экран).

encodedContent = fp.read()
decodedContent = encodedContent.decode("utf8")

# Выводим содержимое файла, полученного с сервера ('index.html').

print(decodedContent)

# Закрываем соединение с сервером.

fp.close()


Благодаря этому коду клиентское приложение может загрузить данные с сервера и вывести их на экран.

Редактирование файла Dockerfile

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

Код: [Выделить]
# То же самое, что и в серверном Dockerfile.

FROM python:latest

# Импортируем 'client.py' в папку '/client/'.

ADD client.py /client/

# Устанавливаем в качестве рабочей директории '/client/'.

WORKDIR /client/
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #5 : 15 Октябрь 2020, 14:01:23 »
Теперь же мы приступаем к работе с Docker Compose. Для этого обратимся к файлу docker-compose.yml, расположенному в корневой папке проекта.
Цитировать
# Файл docker-compose должен начинаться с тега версии.
# Мы используем "3" так как это - самая свежая версия на момент написания этого кода.
# version: "3"
# [email protected]:~$ docker-compose -v
# docker-compose version 1.27.4, build 40524192

version: "3"

# Следует учитывать, что docker-composes работает с сервисами.
# 1 сервис = 1 контейнер.
# Сервисом может быть клиент, сервер, сервер баз данных...
# Раздел, в котором будут описаны сервисы, начинается с 'services'.

services:

  # Как уже было сказано, мы собираемся создать клиентское и серверное приложения.
  # Это означает, что нам нужно два сервиса.
  # Первый сервис (контейнер): сервер.
  # Назвать его можно так, как нужно разработчику.
  # Понятное название сервиса помогает определить его роль.
  # Здесь мы, для именования соответствующего сервиса, используем ключевое слово 'server'.
 
  server:
 
    # Ключевое слово "build" позволяет задать
    # путь к файлу Dockerfile, который нужно использовать для создания образа,
    # который позволит запустить сервис.
    # Здесь 'server/' соответствует пути к папке сервера,
    # которая содержит соответствующий Dockerfile.
   
    build: server/

    # Команда, которую нужно запустить после создания образа.
    # Следующая команда означает запуск "python ./server.py".
   
    command: python ./server.py

    # Вспомните о том, что в качестве порта в 'server/server.py' указан порт 1234.
    # Если мы хотим обратиться к серверу с нашего компьютера (находясь за пределами контейнера),
    # мы должны организовать перенаправление этого порта на порт компьютера.
    # Сделать это нам поможет ключевое слово 'ports'.
    # При его использовании применяется следующая конструкция: [порт компьютера]:[порт контейнера]
    # В нашем случае нужно использовать порт компьютера 1234 и организовать его связь с портом
    # 1234 контейнера (так как именно на этот порт сервер
    # ожидает поступления запросов).
    ports:
      - 1234:1234

# Второй сервис (контейнер): клиент.
  # Этот сервис назван 'client'.
 
  client:
 
    # Здесь 'client/ соответствует пути к папке, которая содержит
    # файл Dockerfile для клиентской части системы.
   
    build: client/

    # Команда, которую нужно запустить после создания образа.
    # Следующая команда означает запуск "python ./client.py".
 
    command: python ./client.py

    # Ключевое слово 'network_mode' используется для описания типа сети.
    # Тут мы указываем то, что контейнер может обращаться к 'localhost' компьютера.
   
    network_mode: host

    # Ключевое слово 'depends_on' позволяет указывать, должен ли сервис,
    # прежде чем запуститься, ждать, когда будут готовы к работе другие сервисы.
    # Нам нужно, чтобы сервис 'client' дождался бы готовности к работе сервиса 'server'.
    depends_on:
      - server

Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #6 : 15 Октябрь 2020, 14:12:32 »
Сборка проекта
Код: [Выделить]
docker-compose build
Запуск проекта
Код: [Выделить]
docker-compose up
Эта команда позволяет останавливать и удалять контейнеры и другие ресурсы, созданные командой docker-compose up:
Код: [Выделить]
docker-compose down
Эта команда выводит журналы сервисов:
Код: [Выделить]
docker-compose logs -f [service name]
С помощью такой команды можно вывести список контейнеров:
Код: [Выделить]
docker-compose ps
Цитировать
                Name                         Command          State     Ports
-----------------------------------------------------------------------------
client-server-docker-compose_client_1   python ./client.py   Exit 0
client-server-docker-compose_server_1   python ./server.py   Exit 137


Данная команда позволяет выполнить команду в выполняющемся контейнере:
Код: [Выделить]
docker-compose exec [service name] [command]
Например, она может выглядеть так: docker-compose exec server ls.

Такая команда позволяет вывести список образов:
Код: [Выделить]
docker-compose images
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #7 : 15 Октябрь 2020, 14:28:23 »
Цитировать
[email protected]:~/client-server-docker-compose$ docker-compose build
Building server
Step 1/4 : FROM python:3
3: Pulling from library/python
e4c3d3e4f7b0: Pull complete
101c41d0463b: Pull complete
8275efcd805f: Pull complete
751620502a7a: Pull complete
0a5e725150a2: Pull complete
397dba5694db: Pull complete
b1d09d0eabcb: Pull complete
475299e7c7f3: Pull complete
f7f508209c90: Pull complete
Digest: sha256:c2ddd6d8118c92ccee2b181f7a6f64ea50f003b697500971303ab7fea4b385a8
Status: Downloaded newer image for python:3
 ---> 18f3593da4a5
Step 2/4 : ADD server.py /server/
 ---> fbe180b26365
Step 3/4 : ADD index.html /server/
 ---> 9968a872b5eb
Step 4/4 : WORKDIR /server/
 ---> Running in 7f4077d41c40
Removing intermediate container 7f4077d41c40
 ---> f6f9d1611217

Successfully built f6f9d1611217
Successfully tagged client-server-docker-compose_server:latest
Building client
Step 1/3 : FROM python:3
 ---> 18f3593da4a5
Step 2/3 : ADD client.py /client/
 ---> 694c7a6db549
Step 3/3 : WORKDIR /client/
 ---> Running in ee8260322a85
Removing intermediate container ee8260322a85
 ---> 5a6aae4f24bf

Successfully built 5a6aae4f24bf
Successfully tagged client-server-docker-compose_client:latest
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #8 : 18 Ноябрь 2020, 16:02:37 »
docker --version    какая версия Docker используется
если нет устанавливаем.

Код: [Выделить]
Install Docker on Ubuntu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
sudo apt update
sudo apt install apt-transport-https
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl status docker                                                                    q чтобы выти
sudo usermod -aG docker $USER

Docker Compose
если 1.27.4  https://github.com/docker/compose/releases
Код: [Выделить]
sudo curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)"

sudo chmod +x /usr/local/bin/docker-compose

docker-compose -v  проверить версию и все готова)
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

Оффлайн imk

  • Легат
  • Постоялец
  • *
  • Сообщений: 234
  • Карма: +3/-1
    • Просмотр профиля
  • Раса: Элийцы
  • Класс: Волшебник
Re: Шпаргалка с командами Docker
« Ответ #9 : 03 Февраль 2021, 02:59:37 »
Удаление всех контейнеров, из которых выполнен выход

Вы можете найти контейнеры с помощью команды docker ps -a и отфильтровать их по статусу: created (создан), restarting (перезапускается), running (работает), paused (пауза) или exited (выполнен выход). Чтобы просмотреть список контейнеров, из которых выполнен выход, используйте флаг -f для фильтрации по статусу. Убедитесь, что вы хотите удалить эти контейнеры, и используйте флаг -q для передачи идентификаторов в команду docker rm.

Список:

    docker ps -a -f status=exited

 

Удаление:

    docker rm $(docker ps -a -f status=exited -q)
Записан
3.2. ПРОЦВЕТАНИЕ В ЕДИНСТВЕ - соответствуй подписи герба ГИ КРЫМ.

  • Печать
Страницы: [1]   Вверх
« предыдущая тема следующая тема »
  • Crimeaion »
  • High End »
  • Linux »
  • Шпаргалка с командами Docker
 

  • RSS
  • Мобильная версия
Сrimeaion © 2015 - наш сайт: КРЫМ