Изучение Docker: dockerfile и docker-compose

Узнайте, как использовать dockerfile

Следующий контент частично сгенерирован gpt. Могут быть проблемы с описанием, но я проверю часть кода.

1. Спрос

Для докера, такого как Python, нам нужно иметь np, когда он встроен в контейнер. Есть два метода:

  1. Вытащите python и после запуска pip установите в него numpy, а затем упакуйте и сохраните контейнер.
  2. При извлечении Python запустите pip install numpy вместе.

2. dockerfile — docker-compose

Примечание. Для достижения вышеуказанных функций используется dockerfile для определения и построения сценария инструкций одного образа Docker, то есть извлечения; docker-compose используется для определения и запуска инструментов и файлов конфигурации многоконтейнерного Docker. приложений, обеспечивая унифицированный способ запуска.
Dockerfile:
Назначение: Dockerfile используется для определения содержимого и конфигурации одного контейнера. Он предоставляет возможность создать новый образ Docker с нуля или настроить новый образ на основе существующего образа Docker.
Основные операции: определение, сборка и настройка контейнера Docker. Примеры использования: установка программного обеспечения, настройка переменных среды, определение рабочих каталогов, установка точек входа и т. д. Использование: используйте команду docker
build, чтобы создать новый образ Docker из файла Dockerfile.
docker-compose:
Цель: docker-compose используется для определения и запуска многоконтейнерных приложений Docker. Он обеспечивает декларативный способ определения набора связанных контейнеров, сетей между ними, томов и другой конфигурации.
Основные операции: определение, подключение и управление несколькими контейнерами.
Пример использования: запуск мультисервисных приложений (таких как интерфейсная часть, серверная часть и база данных) в локальной среде разработки, настройка сетевых подключений между службами, определение и монтирование томов и многое другое.
Использование: используйте команду docker-compose up для запуска службы на основе файла docker-compose.yml.

3. Докер-файл

Используйте Dockerfile для реализации Python с помощью numpy

  1. Создайте Dockerfile, имя должно быть строгим.
# 使用python:latest作为基础镜像
FROM python:latest

# 安装numpy
RUN pip install numpy
  1. Создайте зеркало вышеуказанного контента.
# docker build -t image-name:latest <Dockerfile的路径>
docker build -t py-with-np:v1 .
# 使用 docker images查看已有镜像
  1. Запустите указанный выше докер
docker run -it -v /opt/appdata/python:/py --name pytest py-with-np:v1
# 使用docker ps -a查看运行的容器

4. докер-составление

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

  1. Создать Docker-файл:
# 使用python:latest作为基础镜像
FROM python:latest

# 安装numpy
RUN pip install numpy

  1. Создайте docker-compose.yml:

Простая версия, запустите Python сразу после запуска

version: '3'

services:
  hello-service:
    build:
      context: .
      dockerfile: Dockerfile
    image: py-with-np:v6
    volumes:
      - /opt/appdata/python:/py
    ports:
      - "8080:8080"
    command: python /py/test.py
    stdin_open: true
    tty: true

Объяснение
: build: указывает docker-compose создать образ Docker на основе файла Dockerfile в текущем каталоге. image:
py-with-np:v1 указывает имя и метку построенного образа. Volumes — это сопоставление томов, такое же, как параметр -v в предыдущей команде запуска Docker
.
Если вы хотите запустить контейнер в docker-compose и сохранить его интерактивным, например интерактивную оболочку Python, вам следует добавить атрибуты stdin_open и tty в файл docker-compose.yml, оба из которых имеют значение true. Это соответствует опциям -i и -t запуска docker.

  1. Запустите контейнер с помощью docker-compose:

Сначала перейдите в каталог, где находится docker-compose.yml в командной строке. Затем запустите службу с помощью следующей команды:

docker-compose up --build

docker-compose up запускает службу.
Параметр –build гарантирует, что образ службы будет построен или перестроен перед запуском службы.
Вставьте сюда описание изображения

4. Вопрос

-Что я должен делать?
Потому что stdin_open:true tty:true был добавлен в docker-compose.yml, но его по-прежнему нельзя запустить.Можно использовать
только имя образа docker run -it, которое используется на данный момент.

5. Удалите ненужные изображения и контейнеры.

# 查看容器
docker ps -a
# 停止容器
docker stop ID
# 删除容器
docker rm ID
# 查看镜像
docker images
# 删除镜像
docker rmi ID  # 但是可能两个images有相同的ID
docker rmi name:V1

Supongo que te gusta

Origin blog.csdn.net/Hot_Ant/article/details/132890901
Recomendado
Clasificación