фото Филипп Осел на Бессмысленно
Мои скромные усилия Чтобы упростить докер часть III
Решение «Это работает на моей машине» синдром
Это последний пост в SimPlify Docker Series (если вы еще не читали предыдущие, продолжайте и прочитайте их, это сделает больше смысла позже — Часть I & Часть II ). На этот раз я буду покрывать сети, докер-составляющие, тома докера и многое другое.
Что это за все с помощью Docker-Compose?
Docker-Compose позволяет вам определить и запустить многофункциональные приложения Docker. С помощью Compose вы настраиваете службы вашего приложения, используя файлы YAML (здесь больше на YAML). После этого вы можете начать все услуги, которые ваша конфигурация создана только с одной командой.
В следующем примере от TechWorld с Наной Gitlab. Кстати, канал YouTube Нана настоятельно рекомендуется. Ниже приведен урок ее докера:
В приведенном ниже примере мы хотели бы запустить контейнер MongoDB вместе с контейнером Mongo-Express. Как мы видели на предыдущих постах, (дольше) способ сделать это:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb mongo docker run -d -p 8081:8081 -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -e ME_CONFIG_MONGODB_SERVER=mongodb --name mongo-express mongo-express
Эквивалентная версия YAML Compose является более чистым и читаемым:
version: '3' services: mongodb: image: mongo ports: - 27017:27017 environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=password mongo-express: image: mongo-express ports: - 8080:8081 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME=admin - ME_CONFIG_MONGODB_ADMINPASSWORD=password - ME_CONFIG_MONGODB_SERVER=mongodb
Чтобы использовать, просто запустите: Docker-Compose -f filename.yaml Up
, удалить его, замените аргумент с помощью вниз.
Повернуть громкость
https://medium.com/media/c461c2386ead3ec2b5ef9f5f2472e58b/href
Каждый Docker имеет разную файловую систему, отделенную от среды хостинга. Как мы ранее увидели, при выходе из контейнера большинство его файлов удаляются (если только вы не используете команду commit command). Итак, вы можете использовать тома для сохранения файлов или указать файлы в локальной системе, которые будут использоваться в контейнере. Для этого вам нужно подключиться между оба системами файлов следующим образом:
docker run -v /path/in/host:/path/in/container -it image_name
Вышеуказанная команда будет запустить контейнер, который/path/in/contains сопоставлен на/path/in/host в наших локальных файловых системах. Другим вариантом является использование уникального именованного тома, где Docker устанавливает местоположение локальной файловой системы, и пользователь устанавливает местоположение в контейнере следующим образом:
docker run -v name:/path/in/container -it image_name
Чтобы получить информацию о именованном объеме, мы можем использовать команду Docker Volume осматривает громкость \ _name
А для удаления это делается: Docker Volume RM Volume \ _Name
Отказ Прямое последующее наблюдение — как скопировать и из контейнера (команда копирования, которую мы увидели ранее, не является ответом, она только копирует на изображение, а не под управлением контейнера). Приведенная ниже команда используется для копирования в контейнер:
docker cp: * container - the ID or name of the container
Где следующее используется для копирования из контейнера:
docker cp: * container - the ID or name of the container
Быть связанным
Общаться друг с другом- Src.
Еще одна важная концепция — это сети; Вы можете создать изолированную сеть для нескольких контейнеров. По умолчанию Docker создает один для каждого запуска Docker. Тем не менее, в некоторых ситуациях вы хотели бы назвать его и установить ту же сеть для более чем контейнера; Таким образом, они смогут общаться друг с другом.
Чтобы увидеть все созданные сети, запустив команду:
docker network ls
Чтобы создать сеть:
docker network create network_name
И, наконец, чтобы выстрелить контейнер с этой сетью:
docker run --net network_name -it image_name
Другая полезная команда — запускать контейнер на основе другой сети контейнера для включения связи между двумя, просто пропустите идентификатор контейнера или имени на флаг — нетто. Мы видели, как контейнеры до сих пор общаются друг с другом, но что, если вы хотите делиться данными из внешнего источника? Для этого мы определим внутренние порты, к которым слушает контейнер. В Docker Run -P 5050: 80 image \ _name
команда Он определяет, что порт 5050 системы 5050 хостинга связан с портом 80 контейнера.
Docker Размер изображения Диета
Уменьшить размер изображения — Src.
Размер изображения докера может быстро наполнить до 2,5 и даже 15 ГБ. Лучшая практика — снизить его на пару причин:
- Меньший размер означает легче перемещаться с места на место
- Меньше места на локальной файловой системе
- Обычно изображения хранятся в облачной репозитории. То есть меньший их размер, нижний это стоит
- Безопасность — Установите только то, что вам нужно
Итак, как вы можете сделать размер образца?
- Многоступенчатая состоит из нескольких изображений («от») на одном и том же DockerFile и определите, какой из них опирается на команду сборки. Для этого настоятельно рекомендуется назвать каждый слой (с помощью команды «как« как »), а затем выберите, какой слой для создания использования: Docker Build — -T Container_Name.
- Основывайте изображения на изображениях меньшего размера. Вы можете использовать распределение, такое как альпийский Linux или Google’s отмерщика Отказ
Image следователь
Последняя вещь, прежде чем упаковать это руководство, я хотел бы порекомендовать утилиту с открытым исходным кодом с именем Нырять Отказ Среди его многочисленных особенностей вы можете исследовать контент каждого уровня, размеры файлов и многое другое. По сути, это поможет вам анализировать образы докера. В конце концов, предоставляя достаточно информации, чтобы подумать о способах уменьшения размеров изображений.
Заключить
Этот пост и предыдущие — это только верхушка айсберга того, что может сделать докер. Я надеюсь, что я достаточно упростил его, и если вы сделали это далеко, вы должны иметь основные навыки для начала.
Наслаждаться!
Если вам понравилось …
Оригинал: «https://dev.to/dejavo/how-to-use-docker-compose-volumes-networks-and-more-4a24»