# Ficou correto? \`launcher run\` não usa um container em execução atual?

**URL:** https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117
**Category:** Self-hosting
**Created:** [7 Junho , 2020 18:56 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117 "2020-06-07T18:56:16Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [7 Junho , 2020 18:56 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/1 "2020-06-07T18:56:16Z")

</div>

Ao tentar entender `launcher run`, por exemplo:

```bash
groot@galaxy:/var/discourse$ sudo ./launcher run app whoami

```

Se um site estiver ativo e em execução, o comando acima não entrará nesse site e iniciará o bash para executar o comando `whoami`, mas sim iniciará um novo contêiner baseado na última imagem bootstrap e então executará o comando.

Em outras palavras, se eu quiser usar o `launcher` para aprender sobre um site em execução ao vivo em um contêiner, devo usar `launcher enter` em vez de `launcher run`.

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [8 Junho , 2020 03:05 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/2 "2020-06-08T03:05:35Z")

</div>

> [@EricGT](#):
>
> Em outras palavras, se eu quisesse usar o launcher para aprender sobre um site ao vivo rodando em um container, eu deveria usar `launcher enter` em vez de `launcher run`.

Olá @EricGT

Sim, acho que muitos administradores de sistema do Discourse usam:

```plaintext
./launcher enter <container_name>

```

… para entrar no container em execução e verificar o status (ou executar tarefas) dentro dele.

No entanto, lembre-se de que você pode fazer “como parece querer fazer” usando o Docker diretamente (e facilmente). Não há necessidade de usar um script intermediário para obter essas informações em um container em execução:

```plaintext
# docker exec -it app whoami
root

```

Você pode achar este link útil sobre a sintaxe do comando `docker exec`.

> **[docker container exec](https://docs.docker.com/reference/cli/docker/container/exec/)**

Vamos tentar mais alguns exemplos para diversão:

```plaintext
# docker exec -it app ps aux | grep nginx | wc -l
4

```

```plaintext
# docker exec -it app ps aux | grep redis | wc -l
2

```

```plaintext
# docker exec -it app df 
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 51043548 26426300 22005700 55% /
tmpfs 65536 0 65536 0% /dev
tmpfs 1017712 0 1017712 0% /sys/fs/cgroup
shm 524288 8 524280 1% /dev/shm
/dev/sda 51043548 26426300 22005700 55% /shared
tmpfs 1017712 0 1017712 0% /proc/acpi
tmpfs 1017712 0 1017712 0% /proc/scsi
tmpfs 1017712 0 1017712 0% /sys/firmware
failed to resize tty, using default size

```

```plaintext
# docker exec -it app du -sh /shared

403M /shared

```

```plaintext
# docker exec -it app du -sh /shared/uploads
2.0M	/shared/uploads

```

```plaintext
# docker exec -it app ls -l /var/www/discourse/plugins/
total 36
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 discourse-details
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 discourse-local-dates
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 discourse-narrative-bot
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 discourse-presence
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 discourse-unsupported-browser
drwxr-xr-x 12 discourse root 4096 Jun 7 04:49 docker_manager
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 lazy-yt
drwxr-xr-x 11 discourse root 4096 Jun 7 04:49 neo-revive-discourse
drwxr-xr-x 1 discourse discourse 4096 Jun 7 04:49 poll

```

```plaintext
root@localhost:/var/discourse# docker exec -it app ls -l /shared
total 112
drwxr-xr-x 3 discourse www-data 4096 May 23 09:57 backups
drwxr-xr-x 10 root root 4096 Jun 7 04:55 letsencrypt
drwxr-xr-x 4 root root 4096 May 23 09:43 log
drwxr-xr-x 2 postgres postgres 4096 May 23 09:43 postgres_backup
drwx------ 19 postgres postgres 4096 Jun 7 04:57 postgres_data
drwxrwxr-x 3 postgres postgres 4096 Jun 7 04:57 postgres_run
drwxr-xr-x 2 redis redis 4096 Jun 8 02:56 redis_data
drwxr-xr-x 2 root root 4096 May 28 04:19 ssl
drwxr-xr-x 4 root root 4096 May 23 09:52 state
drwxrwxrwx 4 discourse www-data 4096 Jun 7 04:57 tmp
drwxr-xr-x 3 discourse www-data 4096 May 23 09:46 uploads

```

Esperamos que esses exemplos divertidos lhe deem algumas ideias sobre como aproveitar o uso do `docker exec` para “aprender sobre um site ao vivo rodando em um container”, como você perguntou, @EricGT

Aqui estão mais alguns exemplos para diversão:

```plaintext
# docker exec -it app ls -l /shared/tmp/redis.sock
srwxrwxrwx 1 redis redis 0 Jun 7 04:57 /shared/tmp/redis.sock

```

Este não é necessário porque o socket Unix está no volume compartilhado, mas você entendeu a ideia:

```plaintext
#docker exec -it app redis-cli -s /shared/tmp/redis.sock monitor
OK

(truncated, tons of live, streaming data)

```

E finalmente, claro, nossa favorita “velha solteira” de comandos de administração de sistema:

```plaintext
root@localhost:~# docker exec -it app ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 6660 292 pts/0 Ss+ Jun07 0:00 /bin/bash /sb
root 627 0.0 0.0 2308 60 pts/0 S+ Jun07 0:01 /usr/bin/runs
root 628 0.0 0.0 2156 68 ? Ss Jun07 0:00 runsv cron
root 629 0.0 0.0 2156 64 ? Ss Jun07 0:00 runsv rsyslog
root 630 0.0 0.0 2156 68 ? Ss Jun07 0:00 runsv redis
root 631 0.0 0.0 2156 64 ? Ss Jun07 0:00 runsv postgre
root 632 0.0 0.0 2156 64 ? Ss Jun07 0:00 runsv nginx
root 633 0.0 0.0 2156 64 ? Ss Jun07 0:00 runsv unicorn
discour+ 634 0.0 0.1 15128 2484 ? S Jun07 0:35 /bin/bash con
root 635 0.0 0.1 55176 3956 ? S Jun07 0:00 nginx: master
postgres 636 0.0 1.2 351840 26132 ? S Jun07 0:04 /usr/lib/post
root 637 0.0 0.0 2300 60 ? S Jun07 0:00 svlogd /var/l
redis 638 0.3 0.3 56700 7880 ? Sl Jun07 4:01 /usr/bin/redi
root 639 0.0 0.0 156184 588 ? Sl Jun07 0:00 rsyslogd -n
root 640 0.0 0.0 8436 1216 ? S Jun07 0:00 cron -f
www-data 651 0.0 0.3 56628 6852 ? S Jun07 0:00 nginx: worker
www-data 652 0.0 0.0 55668 1676 ? S Jun07 0:00 nginx: cache 
postgres 657 0.0 1.8 352116 36776 ? Ss Jun07 0:01 postgres: 10/

(truncated)

```

Como você pode ver ou imaginar, o `docker exec` é muito útil e esperamos que esses exemplos despertem um pouco sua imaginação, @EricGT

Aqui estão mais alguns comandos `docker exec` úteis para o Discourse:

> **[Useful Docker Exec Commands for Discourse Sys Admin](https://community.unix.com/t/useful-docker-exec-commands-for-discourse-sys-admin/378785)**
>
> Here are some simple but useful docker exec commands for Discourse (assume the container is called app in the standard OOTB configuration): Running top inside the app container, display on the host: docker exec -it app top Add net-tools to the...

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8 Junho , 2020 10:23 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/3 "2020-06-08T10:23:38Z")

</div>

Essa foi uma resposta incrível e sou muito grato por ela, pois me deu uma visão sobre como outros administradores de sistemas Docker pensam sobre o que é importante e como acessar essas informações rapidamente. No entanto, os [comandos do Docker](https://docs.docker.com/engine/reference/commandline/docker/) são velhos conhecidos meus, e o que eu realmente queria era apenas uma resposta simples de sim ou não para:

> Estou certo? O `launcher run` não usa um contêiner em execução atual?

Gastei algumas horas no outro dia analisando um rastreamento bash do comando `launcher run` e queria ter certeza de que minha análise estava correta. Não esperaria que o `launcher run` iniciasse um contêiner totalmente novo apenas para executar um único comando como `whoami`. O que é mais assustador é que, se alguém achar que o comando funcionará no contêiner em execução atual e fornecerá feedback sobre o contêiner que está executando o site ao vivo, na verdade, estará retornando informações sobre um contêiner diferente.

Concordo plenamente que a maneira como você está fazendo isso com os comandos do Docker é como eu também faria, mas também concordo que, a menos que você conheça a diferença entre `$` e `#`, deve se manter muito longe dos comandos do Docker e confiar no launcher.

Agora que sei que você gosta de usar perguntas com uma pergunta auxiliar como pretexto para destacar coisas que você acha incríveis, tentarei adicioná-las de forma sorrateira de vez em quando. 😀

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [8 Junho , 2020 10:46 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/4 "2020-06-08T10:46:14Z")

</div>

> [@EricGT](#):
>
> Concordo plenamente que a forma como você está fazendo com os comandos Docker é a maneira como eu também faria,

Caro @EricGT

Sim, eu também uso `docker run` (no entanto, não `launcher run`); mas não encontrei realmente uma razão para executar `docker run` e adicionar um comando de shell após o comando `run`, pois, como mencionei em minha resposta, eu sempre uso `docker exec`.

Desculpe que você tenha considerado minha resposta sobre por que uso `docker exec` um “pretexto para falar sobre coisas”. Eu garanto a você, estou realmente ocupado com muitos projetos e não preciso de pretextos para falar sobre coisas; eu estava apenas tentando ajudar _você_ a realizar _sua tarefa_, porque eu não uso `launcher run` para executar comandos de shell em um contêiner Discourse, uso apenas `docker exec`, conforme mencionado em minha resposta; tentando ajudá-lo.

Boa sorte com suas futuras tarefas de administração de sistema Discourse!

Aproveite e mantenha-se curioso!

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8 Junho , 2020 10:56 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/5 "2020-06-08T10:56:14Z")

</div>

A razão pela qual estou perguntando especificamente sobre `launch run` é que estou criando um manual de POE (Procedimento Operacional Padrão) para outros administradores do Discourse, enquanto exploramos a possibilidade de auto-hospedagem, e precisei entender cada comando do launcher em detalhes para documentá-lo. No momento, as notas do POE indicam que usar `launcher run` criará um novo contêiner, então alerta para não usar `launcher run`.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8 Junho , 2020 20:21 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/6 "2020-06-08T20:21:42Z")

</div>

Acredito que você esteja certo ao dizer que `./launcher run` inicia um novo container e executa o comando nele. Se você quiser executar o comando no container existente, precisa fazê-lo com `docker`, conforme discutido.

Se `./launcher` não se comportasse dessa maneira, não funcionaria se não houvesse um container existente.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [8 Julho , 2020 20:22 UTC](https://meta.discourse.org/t/did-i-get-this-right-launcher-run-does-not-use-a-current-running-container/154117/7 "2020-07-08T20:22:28Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
