Узнайте, как использовать dockerfile
Следующий контент частично сгенерирован gpt. Могут быть проблемы с описанием, но я проверю часть кода.
1. Спрос
Для докера, такого как Python, нам нужно иметь np, когда он встроен в контейнер. Есть два метода:
- Вытащите python и после запуска pip установите в него numpy, а затем упакуйте и сохраните контейнер.
- При извлечении 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
- Создайте Dockerfile, имя должно быть строгим.
# 使用python:latest作为基础镜像
FROM python:latest
# 安装numpy
RUN pip install numpy
- Создайте зеркало вышеуказанного контента.
# docker build -t image-name:latest <Dockerfile的路径>
docker build -t py-with-np:v1 .
# 使用 docker images查看已有镜像
- Запустите указанный выше докер
docker run -it -v /opt/appdata/python:/py --name pytest py-with-np:v1
# 使用docker ps -a查看运行的容器
4. докер-составление
Приведенный выше файл docker может только сначала создавать изображения, а затем запускать их, что не элегантно.
docker-compose решает эту проблему
- Создать Docker-файл:
# 使用python:latest作为基础镜像
FROM python:latest
# 安装numpy
RUN pip install numpy
- Создайте 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.
- Запустите контейнер с помощью 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