---
title: 'Облачный сервер с Containers Ready'
sidebar_label: 'Containers Ready'
sidebar_position: 10
toc_max_heading_level: 3
description: 'Как создать облачный сервер для работы с Docker и Docker Compose'
---

import EditIcon from '@selectel/docux/icons/edit'
import CheckIcon from '@selectel/docux/icons/check'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'
import CopyIcon from '@selectel/docux/icons/copy'
import CreateServer from '@site/docs/_partials/cloud-servers/applications/create-server-for-apps.mdx'

# Облачный сервер с Containers Ready

Для работы с файлами Docker Compose можно использовать приложение Containers Ready, которое содержит:

* Docker — платформу контейнеризации для разработки и запуска приложений;
* плагины для запуска Docker Compose;
* Portainer — графический интерфейс для мониторинга и управления Docker-контейнерами, образами и сетью Docker.

Для стабильной работы образа в качестве репозитория Docker Registry используется зеркало Selectel.

Вы можете [создать облачный сервер с готовым приложением Containers Ready](#create-cloud-server-with-containers-ready).
В России приложение работает на облачном сервере с настроенной операционной системой [SelectOS 1 64-bit](https://selectos.selectel.ru/news/mega/).
В других [странах](/infrastructure/locations/#country) — Ubuntu 22.04.

Перед созданием облачного сервера с приложением ознакомьтесь с [лицензионными соглашениями программного обеспечения](https://423.selcdn.ru/kb/license-agreements-for-application-images-LANG.pdf), которое входит в образ.

## Минимальные требования к ресурсам \{#minimum-requirements}

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Количество vCPU</th>
        <td>2</td>
      </tr>

      <tr>
        <th>RAM</th>
        <td>2 ГБ</td>
      </tr>

      <tr>
        <th>Загрузочный диск</th>
        <td>20 ГБ</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Создать облачный сервер с Containers Ready \{#create-cloud-server-with-containers-ready}

:::info

Portainer с TLS-сертификатом работает на порту `9443`, без TLS-сертификата — на порту `9000`.

:::

Для работы Containers Ready облачный сервер должен быть доступен из интернета.
Для этого при создании сервера нужно создать приватную подсеть и подключить публичный плавающий IP-адрес.

Чтобы настроить Containers Ready и конфигурацию Portainer, при создании сервера необходимо указать user data — пользовательские параметры конфигурации операционной системы.
Вы можете задать один из двух набор параметров:

* с выпуском TLS-сетификата для Portainer;
* без выпуска TLS-сетификата для Portainer.

После создания сервера с Containers Ready автоматически выпустится бесплатный [TLS-сертификат от Let’s Encrypt®](/certificates-manager/certificates/lets-encrypt.mdx) для домена, который вы укажете.
Чтобы выпустить сертификат, нужно добавить A-запись для домена и указать в значении записи публичный плавающий IP-адрес сервера.
Домен можно добавить в [DNS-хостинг Selectel (actual)](/dns-hosting/).

1. Опционально: [создайте публичный плавающий IP-адрес](#create-floating-ip).

2. Опционально: [добавьте A-запись для домена](#add-a-record).

3. [Создайте облачный сервер с Containers Ready](#create-containers-ready-server).

### 1. Опционально: создать публичный плавающий IP-адрес \{#create-floating-ip}

Создайте публичный плавающий IP-адрес, чтобы облачный сервер с Containers Ready был доступен из интернета.

Используйте подраздел [Создать публичный плавающий IP-адрес](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx#create-public-floating-ip) инструкции [Публичные плавающие IP-адреса](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx).

### 2. Опционально: добавить А-запись для домена⁠ \{#add-a-record}

[Добавьте ресурсную запись](/dns-hosting/records/add-record.mdx), чтобы получить доступ к облачному серверу с Containers Ready по домену.

Укажите:

* [тип ресурсных записей](/dns-hosting/records/add-record.mdx#record-types) в группе — A;
* значение записи — публичный плавающий IP-адрес, который вы [создали на этапе 1](#create-floating-ip).

### 3. Создать облачный сервер с Containers Ready \{#create-containers-ready-server}

<CreateServer AppNameInPanel="Cloud Containers Ready" MinConfig="2 vCPU, RAM от 2 ГБ и размером загрузочного диска от 20 ГБ" OptionalVolumes="Опционально: добавьте дополнительный" VolumeSize="Укажите размер сетевого диска в ГБ или ТБ" />

<div style={{paddingLeft:'2em'}}>
  <Tabs queryString="add-user-data">
    <TabItem value="tls" default>
      <TabItemLabel>
        Создание сервера с выпуском TLS-сертификата
      </TabItemLabel>

      ```yaml
      #cloud-config

      write_files:
      - path: "/opt/containers/docker-compose.yaml"
        permissions: "0644"
        content: |
          version: "3.9"
          name: test
          services:
            web:
              container_name: web
              image: "busybox"
              env_file: "/opt/containers/.env"
            db:
              container_name: db
              image: "busybox"
              env_file: "/opt/containers/.env"

      - path: "/opt/containers/.env"
        permissions: "0644"
        content: |
          ENV_VARIABLE: example.com

      - path: "/opt/gomplate/values/user-values.yaml"
        permissions: "0644"
        content: |
          portainer_password: "<administrator_password>"
          portainer_use_le: true
          portainer_domain: "<example.com>"
          portainer_le_email: "<root@example.com>"
      ```

      Укажите:

      * в блоке кода `content:` для файла `docker-compose.yaml` укажите содержимое файла Docker Compose;
      * в блоке кода `content:` для файла `.env` укажите содержимое файла. Если файл не нужен, удалите блок кода;
      * `<administrator_password>` — пароль администратора Portainer (логин по умолчанию — `Admin`);
      * `portainer_use_le: true` — параметр для автоматического выпуска TLS-сертификата от Let’s Encrypt®;
      * `<example.com>` — домен для доступа к Portainer, который вы [добавили ранее](#add-a-record);
      * `<root@example.com>` — электронная почта администратора Portainer для создания аккаунта и получения уведомлений Let’s Encrypt®.
    </TabItem>

    <TabItem value="no-tls">
      <TabItemLabel>
        Создание сервера без выпуска TLS-сертификата
      </TabItemLabel>

      ```yaml
      #cloud-config

      write_files:
      - path: "/opt/containers/docker-compose.yaml"
        permissions: "0644"
        content: |
          version: "3.9"
          name: test
          services:
            web:
              container_name: web
              image: "busybox"
              env_file: "/opt/containers/.env"
            db:
              container_name: db
              image: "busybox"
              env_file: "/opt/containers/.env"

      - path: "/opt/containers/.env"
        permissions: "0644"
        content: |
          ENV_VARIABLE: example.com

      - path: "/opt/gomplate/values/user-values.yaml"
        permissions: "0644"
        content: |
          portainer_password: "<administrator_password>"
      ```

      Укажите:

      * в блоке кода `content:` для файла `docker-compose.yaml` укажите содержимое файла Docker Compose;
      * в блоке кода `content:` для файла `.env` укажите содержимое файла. Если файл не нужен, удалите блок кода;
      * `<administrator_password>` — пароль администратора Portainer (логин по умолчанию — `Admin`).
    </TabItem>
  </Tabs>
</div>

<Formbricks />
