こんにちは @EricGT
はい、多くの Discourse システム管理者は以下のように使用しています:
./launcher enter <container_name>
これにより、実行中のコンテナに入り、そのステータスを確認したり(またはタスクを実行したり)できます。
ただし、これは Docker を直接使用することで「あなたがやりたいように」簡単に実行できることを覚えておいてください。実行中のコンテナからこの情報を取得するために、中間のシェルスクリプトを使用する必要はありません:
# docker exec -it app whoami
root
docker exec コマンドの構文については、以下のリンクが役立つかもしれません。
いくつかの例を楽しく試してみましょう:
# docker exec -it app ps aux | grep nginx | wc -l
4
# docker exec -it app ps aux | grep redis | wc -l
2
# 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
# docker exec -it app du -sh /shared
403M /shared
# docker exec -it app du -sh /shared/uploads
2.0M /shared/uploads
# 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
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
これらの楽しい例が、あなたが質問されたように「コンテナ内で動作中のライブサイトについて学習する」ために docker exec をどのように活用できるかのアイデアを与えてくれることを願っています、@EricGT
さらにいくつかの例を楽しく試してみましょう:
# docker exec -it app ls -l /shared/tmp/redis.sock
srwxrwxrwx 1 redis redis 0 Jun 7 04:57 /shared/tmp/redis.sock
これは Unix ソケットが共有ボリュームにあるため必須ではありませんが、ご理解いただけると思います:
#docker exec -it app redis-cli -s /shared/tmp/redis.sock monitor
OK
(省略、多数のライブストリーミングデータ)
そして最後に、もちろんシステム管理者コマンドの定番中の定番:
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/
(省略)
ご覧いただいた通り、あるいは想像できる通り、docker exec は非常に便利です。これらの例があなたの想像力を少し刺激してくれることを願っています、@EricGT
Discourse 用のさらにいくつかの便利な docker exec コマンドをご紹介します:
Discourse
Discourse System Administration
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...
Reading time: 1 mins 🕑
Likes: 1 ❤