# Визначення команд та аргументів для контейнера

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Ця сторінка показує, як визначати команди та аргументи при запуску контейнера
в <a class='glossary-tooltip' title='Pod є групою контейнерів, що запущені у вашому кластері.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/workloads/pods/' target='_blank' aria-label='Pod'>Pod</a>.

## Перш ніж ви розпочнете

<p>Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою <a href="https://minikube.sigs.k8s.io/docs/tutorials/multi_node/">minikube</a> або використовувати одну з цих пісочниць:</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
  <p>Для перевірки версії введіть  <code>kubectl version</code>.</p>


<!-- steps -->

## Визначення команди та аргументів при створенні Podʼа {#define-a-command-and-arguments-when-you-create-a-pod}

При створенні Podʼа ви можете визначити команду та аргументи для контейнерів, які працюють в Podʼі. Щоб визначити команду, включіть поле `command` у файл конфігурації. Щоб визначити аргументи для команди, включіть поле `args` у файл конфігурації. Команду та аргументи, які
ви визначаєте, не можна змінити після створення Podʼа.

Команда та аргументи, які ви визначаєте у файлі конфігурації, перевизначають стандартну команду та аргументи, надані образом контейнера. Якщо ви визначаєте аргументи, але не визначаєте команду, використовується стандартна команда з вашими новими аргументами.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Поле <code>command</code> відповідає <code>ENTRYPOINT</code>, а поле <code>args</code> відповідає <code>CMD</code> у деяких реалізаціях середовища виконання контейнерів.</div>


У цьому завданні ви створюєте Pod, який запускає один контейнер. Файл конфігурації для Podʼа визначає команду та два аргументи:


















<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/uk/examples/pods/commands.yaml" download="pods/commands.yaml"><code>pods/commands.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-commands-yaml')" title="Копіювати pods/commands.yaml до буферу обміну"></img></div>
    <div class="includecode" id="pods-commands-yaml"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Pod</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">command-demo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">purpose</span><span class="p">:</span><span class="w"> </span><span class="l">demonstrate-command</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">command-demo-container</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">debian</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;printenv&#34;</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">args</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;HOSTNAME&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;KUBERNETES_PORT&#34;</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">restartPolicy</span><span class="p">:</span><span class="w"> </span><span class="l">OnFailure</span><span class="w">
</span></span></span></code></pre></div></div>
</div>

1. Створіть Pod на основі файлу конфігурації YAML:

   ```shell
   kubectl apply -f https://k8s.io/examples/pods/commands.yaml
   ```

1. Перегляньте список запущених Podʼів:

   ```shell
   kubectl get pods
   ```

   Вивід показує, що контейнер, який працював у Podʼі command-demo, завершився.

1. Щоб побачити вивід команди, яка запустилася в контейнері, перегляньте логи з Podʼа:

   ```shell
   kubectl logs command-demo
   ```

   Вивід показує значення змінних середовища HOSTNAME та KUBERNETES_PORT:

   ```none
   command-demo
   tcp://10.3.240.1:443
   ```

## Використання змінних середовища для визначення аргументів {#use-environment-variables-to-define-arguments}

У попередньому прикладі ви визначили аргументи безпосередньо, надавши їх. Як альтернативу наданню рядків безпосередньо, ви можете визначати аргументи, використовуючи змінні середовища:

```yaml
env:
- name: MESSAGE
  value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
```

Це означає, що ви можете визначити аргумент для Podʼа, використовуючи будь-які з технік доступних для визначення змінних середовища, включаючи [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) та [Secret](/docs/concepts/configuration/secret/).


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Змінна середовища зʼявляється у дужках, <code>&quot;$(VAR)&quot;</code>. Це необхідно для того, щоб змінна була розгорнута у полі <code>command</code> або <code>args</code>.</div>


## Виконання команди в оболонці {#run-a-command-in-a-shell}

У деяких випадках вам потрібно, щоб ваша команда запускалася в оболонці. Наприклад, ваша
команда може складатися з кількох команд, обʼєднаних в конвеєр, або це може бути сценарій оболонки. Щоб запустити вашу команду в оболонці, оберніть її так:

```shell
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
```

## Що далі

* Дізнайтеся більше про [налаштування Podʼів та контейнерів](/docs/tasks/).
* Дізнайтеся більше про [виконання команд у контейнері](/docs/tasks/debug/debug-application/get-shell-running-container/).
* Дивіться [Контейнер](/docs/reference/generated/kubernetes-api/v1.36/#container-v1-core).
